新手入坑Vim

本文对 Vim 新手有一些帮助, 高手请忽略.

之前一直使用 Atom 搭配 Vim 模式来工作, 前段时间彻底跟 Atom 拜拜, 重新配置了 Vim,用了一段时间, 渐渐习惯. 这里记录下使用过程中的一些感受和小技巧, 方便新手快速入坑.

本文基于 Vim 8.2.

配置vimrc

大部分新手一上来多是刷大牛们的.vimrc配置, 然后直接用, 把vim配置得非常 Modern, 我初来也是, 甚至连里面很多配置的语法都不大懂, 一上来什么都不管, 一顿瞎操作, 能用就行. 只能说 Copy + Paste 懒人模式害人不浅啊. 后面慢慢摸出感觉, 砍掉了很多插件, 只留下自己看得懂, 常用到的.

建议新手只配置一些简单的, 后面有需要再慢慢添加, 多看文档, 确保你知道安装的插件是用来做什么的.

一些常用插件:

主题系列, 推荐 vim-airline/vim-airline 搭配 vim-airline/vim-airline-themes

有关语言的插件, Github 自行搜索 vim-[language], 比如 vim-ruby, vim-go…..

一些指令操作与技巧

基本操作, 光标移动hjkl之类, 这里就略过了.简单提一些其他的操作指令.

保存并退出Vim:

除了:wq, 还可以 ZZ (shift+z 两次)

返回 Normal mode :

除了常见的 esc, Ctrl-[, Ctrl-c 也可以.

打开文件:

最简单的是: vim . 打开当前目录, 或者 vim file 打开文件.

Vim 命令本身可以接受参数, 比如 +{cmd} 或者 -c {cmd} , 打开文件并执行相应命令.

vim +{cmd} file
vim -c {cmd} file

这里的cmd 指的是在命令行模式下的命令, 比如打开文件 text.txt 并跳转到第10行:

vim +10 text.txt
vim -c 10 text.txt

命令行模式下打开文件:

推荐用:e xxx , 同时结合 preservim/nerdtree , 可以打开文件:e file , 也可以打开目录:e folder , 基本满足需求.

无插件下查找文件:

使用自带的 find, 记得搭配 set path , 设置好需要查找的目录, 同时巧用Tab 键补全. 比如:

:set path+=app/models/
:find tes<Tab>

搜索与替换:

搜索:

在当前文件中搜索, 使用自带的/content, ? content

全文搜索, 建议用插件吧, 推荐 eugen0329/vim-esearch, 我自己用起来目前觉得够用,顺手.如果非要用自带的:vim 或者 :grep 可能导致弃坑…..

替换:

  • :s/pattern/replace/g - 全局替换当前行所有匹配.
  • :%s/pattern/replace/g - 全局替换当前文件所有匹配.
  • :%s//replace/g - 全局替换当前文件最后一次搜索结果.

撤销与反撤销

u 撤销(Undo), 如果需要撤销刚刚的撤销操作 (Redo), 使用 Ctrl-r

Tab 创建与切换:

:tabnew file : 在新的 tab 中打开文件

打开文件时, 开多个tabs, 可以用:vim -p file1 file2

跳转到 下一个 tab 用 gt, 前一个 tab 用 gT

窗口拆分与切换:

Ctrl-w + n: 拆分窗口, 新增窗口

Ctrl-w + s: 将当前窗口分成水平窗口

Ctrl-w + v: 将当前窗口分成竖直窗口

Ctrl-w + q / c : 退出/关闭 当前窗口

Ctrl-w + h/j/k/l: 窗口左右上下切换

Buffer切换:

:bn 切换到下一个buffer

:bp切换到前一个buffer

:bd 删除当前buffer, 可以:bd + {BufferNumber}, 删除指定 bufferNumber 的Buffer.

命令行使用:ls 列出buffer 列表, 如何去对应的Buffer?

:buffer + {BufferNumber} 或者按键 bufferNumber + Ctrl-^, 去指定 bufferNumber的Buffer.

Ctrl-^ 也可以用来返回前一个编辑的buffer.

Vim 和 终端切换:

挂起Vim的三种方法:

  • :suspend
  • :stop
  • Ctrl-z

终端输入: fg<cr> 返回到Vim. (<cr> 指 Enter键)

执行命令:

:!cmd 其中 cmd 为 shell 命令.

对文件的操作, 可以考虑安装 tpope/vim-eunuch 试试.[vim-eunuch 偶尔会让人抓狂..]

屏幕刷新恢复:

如果一顿操作后, 整个屏幕黑了(sooner or later….), 使用 Ctrl+l 或者命令 :redraw, 甚至强制刷新 :redraw! 回到现实.

vim 文档阅读:

:h(elp) {content} {content} 为需要搜索的内容.

比如 :h i_CTRL-P 查看 Insert 模式下 Ctrl-P 做什么. 如果查看Normal 模式下Ctrl-P 做什么, 用 :h CTRL-P

阅读文档时, 如何跳转?

Ctrl-] 跳转到光标对应的文档

Ctrl-o 返回上一个位置

最后

Enjoy.