Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient.
为什么要学习 Vim
- Keyboard Driven, 使用 Vim,你可以专注于程序/文本,不会分散注意力;
- 极强的可定制性,可扩展性,使用 Vim,你可以打造一个独一无二的属于你自己的编辑器,在这一点上,我认为唯有 Emacs 可以与之较量;
- Vim 是一种文本操作的模式,因此,即使你不使用 Vim 编辑器,你也可以在其它编辑器(如 Vs Code, Jetbrains, Sublime, Emacs...)中使用 Vim,Enjoy both worlds!
- Vim 很有趣。
使用 Vim 的方式
- Vim Editor(支持 VimScript 配置)
- Neovim(支持 VimScript 和 Lua 配置)
- Emacs + evil 插件(个人认为最好的 Vim 插件) *
- Vscode + Vim 插件
- Vscode + Vscode-neovim 插件(个人推荐,可以原生支持绝大多数 Neovim 插件) *
- JetBrains + IdeaVim 插件(该插件很强大) *
Vim 四种模式
Insert Mode
: 插入模式,类似于其他编辑器,用于文本的输入;Normal Mode
: 普通模式,此模式下键盘上的所有按键均可以映射为命令;Visual Mode
: 选择模式,可以选择文本,组合为可以操作的文本对象;Command Mode
: 命令模式,在普通模式下输入:
进入命令模式,可以执行一些预设的或自定义的方法,可以认为 Command Mode 属于 Normal Mode。
Vim 基础操作
输入i
进入 Insert Mode,输入ESC
进入 Normal Mode。
在 Normal Mode 下:
:q
: 退出 Vim;:q!
: 退出且不保存;:w
: 保存;:wq
: 保存之后退出;:saveas
: 另存为;/
: 搜索。
Vim 是一门操作文本的语言
可以把 Vim 视为一门专为操作文本而设计的语言,其包含着一般语言所具有的动词、修饰词、名词等。
动词
d
: delete,删除;y
: yank,复制;c
: change,修改;>
: indent,缩进;v
/V
: visual select,选择文本;- ...
名词
w
: word,一个单词;)
: sentence,一句话;}
: paragraph,一段话;t
: tag,标签;- ...
修饰词
修饰词用于修饰名词,组合为可以操作的文本对象。
i
: in,内部,如iw
表示单词内部;a
: around,周围;f
: forward,向前搜索一个字符,如fo
表示从当前点到o
,包括o
;t
: to,向前搜索一个字符,如to
表示从当前点到o
,但不包括o
;/
: search,在当前 buffer 中搜索,如d/to<CR>
表示删除从当前点到to
的所有字符;Number
: 数量修饰,如2w
表示两个单词;- ...
Examples
dd
: 删除当前行;cc
: 修改当前行;yy
: 复制当前行;>>
: 缩进当前行;dw
/diw
: 删除一个单词;d)
: 删除一句话;d}
: 删除一段话;d2w
: 删除两个单词;yi"
: 复制 "" 内的文本;ct<
: 修改当前点到<
的文本。
移动
上下左右
j
: 向下移动;k
: 向上移动;h
: 向左移动;l
: 向右移动。
其他常用移动方法
* 向前:指光标右下侧;
* 向后:指光标左上侧。
0
: 移动至行首;$
: 移动至行尾;gg
: 移动至文件顶端;G
: 移动至文件结尾;f"
: 移动至"
处,光标在"
;t"
: 移动至"
处,光标在"
前面;w
: 向前移动一个单词;b
: 向后移动一个单词;)
: 向前移动一句话;(
: 向后移动一句话;}
: 向前移动一段话;{
: 向后移动一段话;- ...
撤销/复原
u
: undo,撤销操作;Ctrl+r
: 复原。
重复
.
: dot,重复执行上一次操作;qa
: 录制一个名为a
的宏;@a
: 执行宏a
。
总结
本文涉及了 Vim 的一些基础操作,考虑到本文是为了使初学者适应 Vim,在 Vim 中“存活”,对于 Vim 的定制性、扩展性、在其他流行编辑器中的使用并未深入讨论,但我认为其已经足够强大到替代原有的编辑器了,希望读者阅读本文后,能够不再惧怕 Vim,享受 Vim。