Oh My Zsh + Tmux + vim配置安装


2021-04-09作为人与计算机的“接口”,shell无疑是程序员最离不开的工具之一。一个配置得当的shell能够让工作效率大大提升(👴直接)并且还能保持美滋滋的心情(😇)。本文详细介绍了较为流行的Oh my zsh + tmux组合的配置安装过程,供大家参考💤

1. Oh My Zsh

1.1 前言

1.1.1 什么是zsh?

  • zsh全名z shell,顾名思义,它是shell的一种,而且是很powerful的那种。那shell又是什么?通俗地讲,shell就是能够接受用户输入指令的操作界面,像我们常说的“命令行”、“终端”等指的都是shellshell的种类繁多,但大多数Linux发行版(如Ubuntu)默认使用的均为bash shell。相比于bashzsh为程序员提供了更多、更好、更灵活的选择,无论是外观(e.g. 丰富的主题)还是实用的插件(插件是灵魂=。=),因此其深受广大码农的青睐。
  • 这里给出Zsh主页的官方定义:Zsh is a shell designed for interactive use, although it is also a powerful scripting language.

1.1.2 什么是oh my zsh?

  • zsh的强大功能往往伴随着复杂的插件配置过程(发量-n😭)。为了使zsh用起来更方便快捷,oh my zsh应运而生。oh my zsh主要的功能就是对zsh的插件配置进行统一管理,因此你可以形象地称它为zsh的“配置管家”。
  • 这里给出Oh My Zsh主页的官方定义: Oh My Zsh is a delightful, open source, community-driven framework for managing your Zsh configuration.

1.1.3 为什么要使用zsh or oh my zsh?

  • 效率:让你的指令操作如德芙般丝滑。
  • 灵活:插件库深似海,总有一款适合你。
  • 成为实验室中最靓的仔:懂的都懂😏

1.2 oh my zsh 安装(step by step)

  • 注:以下安装过程均基于Ubuntu 16.04(Windows系统下的安装可直接参考官方链接oh my zsh githubInstall zsh

1.2.1 安装 zsh

  • 查看正在使用的shell:echo $SHELL
  • 查看所有shell:cat /etc/shells
  • 安装zsh:sudo apt install zsh
  • 再次查看所有shell:cat /etc/shells
  • 查看zsh版本:zsh --version # 版本最好大于5.0
  • 将zsh设置为默认shell:chsh -s $(which zsh)
  • 仅对当前用户设置(适合在服务器上配置时使用):先输入chsh回车, 再输入新的shell路径:/usr/bin/zsh
  • 重新启动shell(本地需要重启),输入:echo $SHELL # 进行验证
  • 可能遇到的问题:Ignore insecure directories and continue [y] or abort compinit [n]? 输入y,再参考issue_1解决
    • 讨论: Basically, ZSH expects system files to be owned and modifiable (w) by either you (the one running the shell) or root
    • 因此若是普通用户,需联系具有root权限的用户将compaudit命令显示的目录的所有者改为root,即运行sudo chown -R root:root target_directory命令。

1.2.2 安装 oh my zsh

  • 需预先安装:curlwget,以及git
  • 在命令行中输入以下命令之一:
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 
  • 若上述命令执行出错,可直接点击网址进行下载(点击网址后在新弹出的网页右键另存为即可下载install.sh文件),再执行sh install.sh命令进行安装。
  • 安装成功后显示:

1.3 oh my zsh使用

  • 配置文件:完成安装后,会自动在主目录下生成一个隐藏文件~/.zshrc,此即为配置文件,也是最重要的文件。
  • 主题oh my zsh提供了海量的主题,具体可参考themes。找到自己心仪的主题后,只需在配置文件中将ZSH_THEME=”robbyrussell”引号中主题名字替换,保存文件后重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)即可。
  • 插件:丰富的插件是zsh的灵魂。可用的插件列表见链接plugins,每个插件文件夹下都有其对应的README文档供参考。若要使用某插件,只需在配置文件中将插件名字加入到plugins=()字段中的括号中即可。注意需以空格或换行来分隔多个插件名,而不能用逗号。修改后保存文件重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)即可。

1.4 推荐插件(updating)

1.4.1 extract

  • 功能:一键解压所有格式文件,x file_name or extract file_name
  • 只需在配置文件中加入该插件名extract后重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)即可使用。

1.4.2 autojump

  • 功能:自动跳转,具体用法见autojump
  • 安装:在命令行中依次执行:
    git clone https://github.com/wting/autojump.git
    cd autojump
    ./install.py
  • 在配置文件中加入该插件名autojump后重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)即可使用。

1.4.3 zsh-autosuggestions(强烈推荐)

  • 功能:自动补全,具体用法见zsh-autosuggestions
  • 安装:在命令行中执行:
    git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
  • 在配置文件中加入该插件名zsh-autosuggestions后重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)即可使用。
  • 改键(由于默认的快捷键较为不方便,因此可按自己习惯进行改键)
    • 打开配置文件,找到source $ZSH/oh-my-zsh.sh,在该行下面新增一句:
      bindkey '^F' autosuggest-accept
    • ‘^F’代表组合键Ctrl+F,可按自己习惯进行更改。更改后保存文件,重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)。
    • 部分补全功能:组合键Alt+FEsc+F,这是自带的,但大部分博客中都没有提及。
    • 完成上述改建操作后,可以很方便地使用Ctrl+F进行全补全,Alt+F进行部分补全。

1.4.4 zsh-syntax-highlighting(官方主页:zsh-syntax-highlighting

  • 功能:语法高亮。
  • 安装:在命令行中执行:
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  • 在配置文件中加入该插件名zsh-syntax-highlighting后重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)即可使用。

1.4.5 sudo

  • 功能: 连按两次Esc即可在当前命令开头加上sudo
  • 只需在配置文件中加入该插件名sudo后重启shell(或直接在命令行中输入source ~/.zshrc使配置生效)即可使用。

2. Tmux

2.1 简介

  • Tmux是一个终端复用神器,能够在单个屏幕中同时创建并操控多个终端。最重要的是,它可以随时从当前屏幕中分离(detach)出去,然后在后台继续运行,并且能够重连(attach)。因此其非常适合在服务器上使用。
  • tmux github上给出的定义为: tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached.

2.2 安装

  • Ubuntu系统, 在命令行中运行:
    sudo apt install tmux
  • 其他系统的安装可参考官方安装教程tmux install

2.3 配置

  • 推荐oh my tmux配置,可在该配置的基础上进行个性化适配。
  • 上述配置安装:
    cd ~
    git clone https://github.com/gpakosz/.tmux.git
    ln -s -f .tmux/.tmux.conf
    cp .tmux/.tmux.conf.local .

2.4 基本用法

  • tmux: 创建一个新的会话(session),并自动命名为0
  • tmux new -s name: 创建一个名字为name的会话
  • tmux ls: 列出当前所有的会话
  • tmux at -t name: 恢复(attach)名字为name的会话
  • tmux -V: 查看tmux版本
  • 快捷键绑定
    • Ctrl b: 前置键, 记为<prefix>
    • <prefix> e: 打开~/.tmux.conf.local文件,此文件即为配置文件,可修改以适配自己的习惯。
    • Ctrl l: 清屏
    • <prefix> Ctrl c: 创建新的会话
    • <prefix> Ctrl -: 水平分割窗口
    • <prefix> Ctrl _: 垂直分割窗口
    • <prefix> t: 显示时间
    • <prefix> z: 将当前窗口最大化(返回原状也是该快捷键)
    • <prefix> m: 开启鼠标模式
    • <prefix> 0-9: 选择0-9窗口
    • <prefix> ,: 重命名窗口
      • 要固定窗口名称,则需在.zshrc中加DISABLE_AUTO_TITLE=true

3. vim

3.1 vim 简介

  • 官方给出的定义:Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient.
  • vim作为老牌的文本编辑器,因其高效、灵活、插件丰富、可扩展性强等特点在程序员中被广泛使用。
  • Neovim是Vim的重构版本,但对于普通用户而言,二者的区别不大。
  • vim的强大功能主要来源于其丰富的配置及插件库,谨以此文记录自己的vim/nvim配置。

3.2 vim基础配置

  • vim的配置文件为用户主目录下的~/.vimrc文件,nvim的配置文件则为~/.config/nvim/init.vim若没有则可以自行创建。
  • syntax on 开启语法高亮
  • set number 设置行号
  • set autoread 文件在外部被改变时自动重新载入
  • set nobackup 覆盖文件时不保留备份
  • set encoding=utf-8 设置vim内部字符编码
  • set ruler 在右下角显示当前行号、列号及相对位置
  • set backspace=2 使得删除键生效
  • set hlsearch 高亮搜索结果
  • set tabstop=4 缩进空格数
  • au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif 自动跳到上次打开的光标位置
  • hi comment ctermfg=6 改变注释颜色为淡蓝色
  • 键位映射
  • let mapleader = ";" 设置前缀键
  • nnoremap <C-a> <Home>
  • inoremap <C-a> <Home>
  • nnoremap <C-e> <End>
  • inoremap <C-e> <End>
  • nnoremap <leader>s :so ~/.vimrc<CR>
  • 使光标一直处于屏幕中间
  • nnoremap j gjzz
  • nnoremap k gkzz
  • nnoremap <ESC> :noh<CR>zz

3.3 插件管理

  • 丰富的插件是vim的灵魂,但同时繁杂的插件会带来许多烦恼,因此插件管理器是十分有必要的。
  • vim-plug是一款简单易用的插件管理器,适用于vim和nvim。在官方项目下载plug.vim文件,并将其放在autoload文件夹下。
  • 对vim放置路径可为~/.vim/autoload/,对nvim可为~/.config/nvim/autoload/
  • 在配置文件中管理插件:
    call plug#begin('~/.vim/plugged')
    Plug 'path/of-plugin'
    ...
    call plug#end()
  • 配置完成后,在命令模式下输入:PlugInstall即可自动安装所有插件。

3.4 推荐插件

  • Vim-markdown
    • 提供针对markdown的语法高亮、段落折叠、查看目录、断间跳转等功能。
    • 在配置文件中加入Plug 'godlygeek/tabular'Plug 'plasticboy/vim-markdown'
    • 输入:help vim-markdown可查看其用法
    • 若要高亮数学公式,则在配置文件中加入let g:vim_markdown_math = 1

3.5 其他

  • 若同时使用tmux,则C-A快捷键会冲突,需把tmux中C-A禁用。
    • 解除tmux配置文件~/.tmux.conf.local340-345行的注释,将344,345行中的a改为b
  • 若用nvim,可以将vim映射至nvim,每次用vim启动即可。
    • 在用户配置文件~/.bashrc~/.zshrc中加入alias vim=nvim

4. 使用心得

到目前(2021.04)为止,已使用oh my zsh + tmux有大半年了,感觉良好😎。插件方面(自动补全永远💧神)目前感觉够用,没有其他特别的需求,大家有比较好的插件也可以分享一下👏。值得一提的是,如果突然在一台没这些配置的主机上工作,会出现强烈的不适感😵tmux最好的一点就是如果连接远程服务器的终端卡死或者意外断开连接,能够轻松地attach并且之前的程序不会终止。我一般会把第一个窗口用来监测服务器的使用情况,其他的则是各个项目。

5. References


文章作者: Wonder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wonder !
评论
  目录