zsh、tmux和vim插件的配置和使用

综述

本文主要介绍了配置zsh,安装配置vim插件,以及安装tmux等。

安装配置zsh

安装zsh

Debian系可以直接通过以下命令安装zsh:

1
sudo apt-get install zsh

此时,执行以下命令

1
2
3
# cat /etc/shells # 查看所有shell
echo $SHELL # 查看默认shell
# chsh -c $(which zsh) # 修改默认shell

通过查看默认shell,发现没什么变化,别急,这才刚刚开始。网上有大神写了配置zsh的脚本文件,为大多数人所采纳,不必担心shell中注入恶意代码,安装方式如下:

1
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

安装完之后,重启所有终端即可进入zsh。

配置zsh

安装powerlevel9k

在终端下输入以下命令

1
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

即安装完毕

安装awesome-terminal-fonts

在终端下执行以下命令

1
git clone https://github.com/gabrielelana/awesome-terminal-fonts.git

将fonts clone到本地,然后执行以下命令,将awesome-terminal-fonts/build目录下的文件拷贝到~/.fonts目录下,如果没有~/.fonts目录则创建一个。命令如下:

1
2
3
4
5
6
cd awesome-terminal-fonts
cp ./build/* ~/.fonts/*
fc-cache -fv ~/.fonts
cp ./config/10-symbols.conf ~/.config/fontconfig/conf.d
# 若~/.config/fontconfig/conf.d不存在,则按照如下命令创建
# mkdir ~/.config/fontconfig/conf.d -p

执行完上述命令后,打开.zshrc文件,在其中加入以下内容:

1
source ~/.fonts/*.sh

配置zsh

打开.zshrc,在其中添加或修改以下内容,注意POWERLEVEL9K_MODE=’awesome-fontconfig’需放置在ZSH_THEME=”powerlevel9k/powerlevel9k”之前。

1
2
3
4
5
6
7
8
9
10
 6 export TERM="xterm-256color"
7 # Set name of the theme to load. Optionally, if you set this to "random"
8 # it'll load a random theme each time that oh-my-zsh is loaded.
9 # See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
10 # ZSH_THEME="robbyrussell"
11 POWERLEVEL9K_MODE='awesome-fontconfig'
12 ZSH_THEME="powerlevel9k/powerlevel9k"
13 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon dir vcs)
14 POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status custom_git_stats time)
17 POWERLEVEL9K_OS_ICON_FOREGROUND="blue"

13-17行定义了zsh的prompt的样式,保存并退出,并在终端下执行source ~/.zshrc即可看到酷炫的zsh样式。如果有出现乱码,可先确定awesome-terminal-fonts是否安装出错,若已确认正确安装,仍出现乱码,可按照链接4安装Powerline fonts。并将POWERLEVEL9K_MODE=’awesome-fontconfig’注释掉。

配置vim

安装vundle

在终端下执行以下命令:

1
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

即可安装vundle.

安装插件

打开.vimrc,如果没有则新建,在其中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 1 set nocompatible
2 set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
3 set termencoding=utf-8
4 set encoding=utf-8
5 set nu
6 " 设置默认进行大小写不敏感查找
7 set ignorecase
8 " 如果有一个大写字母,则切换到大小写敏感查找
9 set smartcase
10 " vundle 环境设置
11 filetype off
12 set rtp+=~/.vim/bundle/Vundle.vim
13 " vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
14 call vundle#begin()
15 Plugin 'VundleVim/Vundle.vim'
16 Plugin 'scrooloose/nerdtree' " file/directory treee
17 Plugin 'scrooloose/nerdcommenter' " code commenter
18 Plugin 'kien/ctrlp.vim' " Fuzzy file, buffer, mru, tag, etc finder
19 Plugin 'altercation/vim-colors-solarized'
20 Plugin 'tomasr/molokai'
21 Plugin 'jacoborus/tender'
22 Plugin 'Shougo/vimproc.vim'
23 " 插件列表结束
24 call vundle#end()
25 filetype plugin indent on
26 " 配置 nerdtree
27 autocmd vimenter * NERDTree # 添加此行即可使用nerdtree
28 map <C-n> :NERDTreeToggle<CR> # 将打开nerdtree的快捷键定义为ctrl+n
29 " 配置 ctrlp
30 let g:ctrlp_map = '<c-p>' # 定义ctrlp快捷键为 ctrl + p
31 let g:ctrlp_cmd = 'CtrlP' # 定义ctrlp命令为CtrlP
32 let g:ctrlp_working_path_mode = 'ra' # 定义ctrlp搜索模式为ra
33 " 配置 nerdcommenter
34 let g:NERDSpaceDelims = 1 # 定义nerdcommenter默认在注释符号后面加一空格
35 " 配置 vim-colors-solarized
36 " syntax enable
37 " set background=dark
38 " colorscheme solarized
39 " 配置 molokai
40 " let g:molokai\_original = 1
41 " let g:rehash256 = 1
42 " 配置 tender
43 syntax enable # 打开符号高亮
44 colorscheme tender # 定义配色方案
45 " colorscheme molokai
46 " colorscheme solarized

10–25行定义了vundle的设置,vim插件需置于 vundle#begin() 和 vundle#end() 之间。27–28行定义了nerdtree的配置,可参照每行后的注释符号了解其意义。30–32定义ctrlp的配置。
nerdcommenter和scheme的设置也如上所示。另外,[vim插件库]https://vimawesome.com/包含了大量的插件,及其安装和配置方法。

相关插件使用方法

nerdtree 插件使用方法

nerdtree 快捷键如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
ctrl + w + h    光标 focus 左侧树形目录
ctrl + w + l 光标 focus 右侧文件显示窗口
ctrl + w + w 光标自动在左右侧窗口切换
ctrl + w + r 移动当前窗口的布局位置

o 展开当前所在目录
O 递归的展开当前所在目录下的所有目录
x 合拢选中结点的父目录
X 递归 合拢选中结点下的所有目录

i (水平地)split 一个新窗口打开选中文件,并跳到该窗口
gi split 一个新窗口打开选中文件,但不跳到该窗口
s (竖直地)vsplit 一个新窗口打开选中文件,并跳到该窗口
gs vsplit 一个新 窗口打开选中文件,但不跳到该窗口

P 跳到根结点
p 跳到父结点
K 跳到当前目录下同级的第一个结点
J 跳到当前目录下同级的最后一个结点
k 跳到当前目录下同级的前一个结点
j 跳到当前目录下同级的后一个结点

C 将选中目录或选中文件的父目录设为根结点
u 将当前根结点的父目录设为根目录,并变成合拢原根结点
U 将当前根结点的父目录设为根目录,但保持展开原根结点

m 显示文件系统菜单,然后根据提示进行文件的操作如新建,重命名等
q 关闭 NerdTree 窗口
? 切换是否显示 Quick Help
e Edit the current dif

I 切换是否显示隐藏文件
f 切换是否使用文件过滤器
F 切换是否显示文件
B 切换是否显示书签

:tabnew [++opt选项] [+cmd] 文件 建立对指定文件新的tab
:tabc 关闭当前的 tab
:tabo 关闭所有其他的 tab
:tabs 查看所有打开的 tab
:tabp 前一个 tab
:tabn 后一个 tab

gT 前一个 tab
gt 后一个 tab

上面指令的前后顺序大致可以反映命令的使用频率从高到低的顺序。

ctrlp 使用方法

ctrl + p 快捷键,在vim命令模式下,可以进行模糊查找,直接输入关键字即可查找,在插入模式下,ctrl + p 快捷键可以自动补全。

nerdcommenter 使用方法

nerdcommenter 快捷键默认前缀为\,常用快捷键为

1
2
\cc	对当前行进行注释 
\cu 对当前行去注释

配合vim ctrl + v在可视模式下,光标移动选择多行,可以进行多行的注释和去注释。

tmux安装及使用

安装tmux

debian系可直接使用apt-get进行安装,由于apt-get的版本相对较老,本文此案去了手动编译的方式,由于tmux依赖于libevent 2.x和ncurses,因此需要先编译安装以上两个依赖。分别在http://libevent.orghttp://libevent.org下载压缩包,加压分别命名为libevent、ncurses,进入libevent,执行以下命令:

1
2
3
4
5
cd libevent
./autogen.sh
./configure
make
sudo make install

进入ncurses执行以下命令:

1
2
3
4
5
cd ncurses
export CPPFLAGS="-P" # 如果不配置这个选项,会报错
./configure
make
sudo make install

安装完成后,执行以下命令,

1
2
3
4
5
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
sudo make install

此时运行tmux,可能会报/usr/local/lib/libevent-2.1.so.6 cannot open shared object file: No such file or directory的错误,这是因为libevent安装在了/usr/local/lib中,而非/usr/lib中,此时可以执行下命令

1
sudo ln -s /usr/local/lib/libevent-2.1.so.6 /usr/lib/libevent-2.1.so.6

或者也可以直接拷贝进去

1
sudo cp /usr/local/lib/libevent-2.1.so.6 /usr/lib/

至此,tmux已经安装完毕

配置tmux

在终端下打开~/.tmux.conf,如果没有则新建,在其中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 基本设置
1 set -g default-terminal "screen-256color"
3 set -g display-time 3000
4 set -g escape-time 0
5 set -g history-limit 65535
6 set -g base-index 1
7 set -g pane-base-index 1
8 #
9 # # 前缀绑定 (Ctrl+a)
10 set -g prefix ^a
11 unbind ^b
12 bind a send-prefix
13 #
14 # # 分割窗口
15 unbind '"'
16 bind - splitw -v
17 unbind %
18 bind | splitw -h
19 #
20 # # 选中窗口
21 bind-key k select-pane -U
22 bind-key j select-pane -D
23 bind-key h select-pane -L
24 bind-key l select-pane -R
25 #
26 # # copy-mode 将快捷键设置为 vi 模式
27 setw -g mode-keys vi
28 #
29 # # 启用鼠标(Tmux v2.1)
30 set -g mouse on
31 #
32 # # 更新配置文件
33 bind r source-file ~/.tmux.conf \; display "已更新"

以上设置主要将tmux的前缀改为Ctrl+a,并设置-和|来进行横向和竖向分屏,比较直观

使用tmux

在tmux外,或者说shell中,tmux有以下命令

1
2
3
4
5
tmux [new -s 会话名 -n 窗口名] # 启动新会话 
tmux at [-t 会话名] # 恢复会话
tmux ls # 列出所有huihua
tmux kill-session -t 会话名 # 关闭会话
tmux kill-server # 关闭所有会话和窗口

在tmux内部,按下前缀ctrl + a(在conf中定义的前缀,默认为ctrl + b),有以下快捷键和命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"" 会话
:new<回车> 启动新会话
s 列出所有会话
$ 重命名当前会话
"" 窗口
c 创建新窗口
w 列出所有窗口
n 后一个窗口
p 前一个窗口
f 查找窗口
, 重命名当前窗口
& 关闭当前窗口
"" 窗格(分割窗口)
| 垂直分割
\- 水平分割
o 交换窗格
x 关闭窗格
⍽ 左边这个符号代表空格键 - 切换布局
q 显示每个窗格是第几个,当数字出现的时候按数字几就选中第几个窗格
{ 与上一个窗格交换位置
} 与下一个窗格交换位置
z 切换窗格最大化/最小化
← 左移窗格
→ 右移窗格
↑ 上移窗格
↓ 下移窗格

我经常使用的快捷键多为ctrl + a,然后[1 - 9] 切换窗口,| -分割窗格,↑ ↓ ← → 移动窗格,c 创建窗口,& 关闭窗口等。更多命令,可以参考链接http://wdxtub.com/2016/03/30/tmux-guide/

Reference

本文主要参考了以下链接:

  1. oh-my-zsh
  2. powerlevel9k
  3. awesome-terminal-fonts
  4. Powerline Fonts
  5. tmux
  6. vundle
  7. vim插件库