Vim 入门

我觉得学习 Vim 要像学习一门语言一样,需要大量的实践和长期的积累才能用的顺手。

实用技巧

这一部分是我在阅读「Vim 实用技巧」的笔记。

  1. 作者如是说:

    传统观点认为,Vim 的学习曲线很陡,但我相信绝大多数Vim用户对此不以为然。

    这句话我不是很认同,现在还是觉得很陡峭,难道在更深入的了解之后就会有改变?

  2. 我发现学习 Vim 和其他东西一样,没有什么灵丹妙药。

  3. * 查找光标下的单词。

  4. >G 命令会增加从当前行到文档末尾处的缩进层级。

  5. 每次进入插入模式时,会形成一次修改,可以用 . 来重复。

  6. 那么如何将插入内容和移动一起作为一次修改呢?执行一系列修改 qx{changes}q,使用 @x 重复这个修改。

  7. 如果在插入模式中使用 <Up><Down><Left><Right> 这些光标键,将会产生一个新的撤销块。

  8. 让每个「可撤销块」对应一次思考过程。如果认为已经走错了方向,就会切换到普通模式,然后按 u 撤销。

  9. <Ca><Cx> 命令分别对数字执行加和减操作,如果当前光标不在数字上,它会自动移动到第一个数字区域。

  10. 注释命令以 gc{motion} 触发,gcc 则注释当前行。

  11. 专业打字员会建议先删除整个单词,然后再重新输入一遍。在插入模式中,<Ch> 删除前一个字符(同退格键),<Cw> 删除前一个单词,<Cu> 删至行首。

  12. zz 命令可以重绘屏幕,并把当前行显示在窗口正中,这样就能够阅读当前行之上及之下的半屏内容。

  13. r{char}gr{char} 命令允许覆盖一个字符,之后马上又回到普通模式。

  14. <Cg> 可以在可视模式及选择模式间切换。

  15. gv 重选上次的高亮选区。

  16. gu 转小写,gU 转大写,g~ 反转大小写,guaw 一个词转小写, guu 一行转小写,guap 一段话转小写,其他同理。

  17. 在可视模式使用 U 命令来把所选中的字符转换为大写。

  18. 注意区分 :!ls:ls 的不同之处。前者调用的是shell中的ls命令,而:ls调用的是Vim的内置命令,用来显示缓冲区列表的内容。

  19. 可以执行Vim的 :shell命令 来启动一个交互的shell会话,另外一种做法是可以用 :read!{cmd} 命令,把{cmd}命令的输出读入当前缓冲区中。

  20. <Co> 进入「普通-插入模式」,即执行完一个命令立马进入插入模式。比如调整光标位置到中间 <Co>zz

  21. 在插入模式中粘贴内容 <Cr>0

  22. 三种不同的可视模式:1. v 面向字符的。2. V 面向行的。3. <Cv> 面向列块的。

  23. 在可视模式中,o 可以切换高亮选区的活动端。

  24. 在可视模式中,a i 都不起作用,必须使用 A I

  25. 出现顺序:ed -> ex -> vi -> Vim

  26. 在命令行里执行的命令又叫 Ex 命令,按下 : 可以触发,按下 <CR> 可以执行。

Vim 配置

Vim 新手肯定觉得 Vim 极其难用,这里面原因很多。比如学习曲线问题,普通的编辑器一般是斜线或者斜曲线的,而 Vim 几乎是垂直的!

抛开学习曲线问题,如果给 Vim 一个很好的配置,也可以让 Vim 变得易用很多。这里是一些常见配置选项:

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
" 设置行号
set number
" 打开语法高亮
syntax on
" 显示当前模式
set showmode
" 显示输入命令
set showcmd
" 使用 utf-8 编码
set encoding=utf-8
" 启动 256 颜色
set t_Co=256
" 开启文件类型检测,并找到对应的缩进
filetype indent on
" 自动缩进
set autoindent
" 设置 tab 的空格数
set tabstop=4
" 设置缩进数
set shiftwidth=4
" tab 转空格
set expandtab
" tab 转为空格数
set softtabstop=4
" 光标当前行高亮
set cursorline
" 设置行宽
set textwidth=80
" 自动拆行,一行太长会分多行显示
set wrap
" 显示状态栏
set laststatus=2
" 在状态栏显示光标位置
set ruler
" 自动显示另外一半匹配,(比如遇到左括号,高亮右括号)
set showmatch
" 高亮显示匹配结果
set hlsearch
" 搜索时,实时显示匹配结果
set incsearch
" 设置备份文件、交换文件、操作历史文件的保存位置
set backupdir=~/.vim/.backup//
set directory=~/.vim/.swp//
set undodir=~/.vim/.undo//
" 保留撤销历史
set undofile
" 出错时,发出视觉提示
set visualbell
" 设置操作历史数
set history=1000
" 打开文件监视器
set autoread
" 将空格变成方块
set listchars=tab:»■,trail:■
set list
" tab 自动补全
set wildmenu
set wildmode=longest:list,full
" 设置增减数字为 10 进制
set nrformats=

我最近找到了一个还不错的配置方法,几乎可以说是「一键配置」!

下面的具体代码基于 Ubuntu 16.04 系统,Mac OS 请参考这个

1
2
3
4
5
6
7
8
# 安装依赖
sudo apt-get install git rake

# 克隆项目
git clone https://github.com/ericzhang-cn/maximum-awesome-linux.git

# 安装,如果出现选项请一路 yes
rake

快去试试吧!

参考

  1. 简明 VIM 练级攻略
  2. 给想学习 VIM 的超级小白的文章
  3. Vim Cheat Sheet
  4. VIM CHEATSHEET (中文速查表)
  5. Interactive Vim Tutorial
  6. 《Vim 实用技巧(第2版)》
  7. Vim 配置入门
作者

Ailln

发布于

2018-06-24

更新于

2024-03-02

许可协议

评论