vim 从入门到丝滑
文章目录
入门
启动Vim后,vim在命令模式下。
让我们进入 输入 模式,请按下键 i 。(你会看到vim左下角有一个–insert–字样,表示,你可以以插入的方式输入了)
此时,你可以输入文本了,就像你用“记事本”一样。
如果你想返回 命令 模式,请按 ESC
键。

现在,你知道如何在 输入 和 命令 模式下切换了。
在 命令 模式下:
- i → 输入 模式,按 ESC 回到 命令 模式.
:w
→ 保存:wq
→ 保存并退出:q
→ 不保存并退出:q!
→ 强制退出
进阶
Vim 中的各种字符串输入方式:
- i 在当前位置插入
- I 在当前行首插入
- a 在当前位置后插入
- A 在当前行尾插入
- o 在当前行之后插入一行
- O 在当前行之前插入一行
移动光标
-
hjkl →左下上右
-
0 → 数字零,到行头
-
^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
-
$ → 到本行行尾
-
gg → 到第一行。
-
G → 到最后一行
-
w → 移动到下一个单词词首
-
e → 移动到下一个单词词尾
-
b → 移动到上一个单词词首
-
:行号 → 跳到指定行
拷贝/粘贴
- P/p → 粘贴
- yy → 拷贝当前行
- cc → 剪切
Undo/Redo
u
→ undo^r
→ redo
搜索
- / → 向下搜索
- ? → 向下搜索
- n 正向下一个
- N 反向下一个
保存/退出
:wq
→ 保存并退出:x
→ 保存并退出ZZ
→ 保存并退出
高级
替换:
:<start line>,<end line>s/<old_str>/<new_str/<option>
option
- c → confirm 确认
- g → global 全局(一行匹配多处全部匹配)
- i → ignore 忽略大小写
- e → error 忽略错误
eg: 1,$s/idx/index/cg
光标移动:
- * → 匹配光标当前所在的单词,移动光标到下一个匹配单词
- # → 匹配光标当前所在的单词,移动光标到上一个匹配单词
更高效的操作:
.
→ 重复上一个命令N<command>
→ 重复某个命令N次gU
→ 变大写gu
→ 变小写
<start position><command><end position>:
例如 0y$
命令意味着:
0
→ 先到行头y
→ 从这里开始拷贝$
→ 拷贝到本行最后一个字符
调换两行的位置
命令 模式下按下 ddp 即可实现。
dd 表示删除当前行,删除行保留在剪切板中,此时光标到达第二行
p 表示在光标当前行的下一行粘贴,第一行的内容交换到第二行。
块操作: ^v
块操作,典型的操作: 0 ^v I# [ESC]j
0
→ 到行头^v
→ 开始块操作j
→ 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)I-- [ESC]
→ I是插入,插入“--
”,按ESC键来为每一行生效。
自动提示: ^n
和 ^p
在 输入 模式下,你可以输入一个词的开头,然后按 ^n 或是 ^p,自动补齐功能就出现了……
分屏:split
和 vsplit
:split → 创建分屏
:vsplit → 创建垂直分屏
^w<dir>
→ dir就是方向,可以是 hjkl 或是 ←↓↑→ 中的一个,其用来切换分屏。
:ls → 查看当前打开的文件
:b → 切换到对应数字的文件
宏录制: qa
操作序列 q
, @a
, @@
qa
把你的操作记录在寄存器a。
- 于是
@a
会replay被录制的宏。 @@
是一个快捷键用来replay最新录制的宏。
使用配置文件: .vimrc

https://dougblack.io/words/a-good-vimrc.html
插件
git地址:https://github.com/junegunn/vim-plug
安装:curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
.vimrc
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdcommenter'
Plug 'vim-scripts/AutoComplPop'
Plug 'preservim/nerdtree'
call plug#end()
Run :PlugInstall