Vim-Vimtutor学习整理

在了解到Vim编辑器的强大的功能后,对于喜爱键盘想要摆脱鼠标的我来说是一个非常大的诱惑。而Vim自带的vimtutor无疑是一个入门的非常好的教程,该教程适合边学边用,很快就能了解最基本的Vim编辑器操作。本文将整理摘录vimtutor中的前六章内容,顺序上做了一定的归纳和调整。 8.24 更新: 补充了在Interactive Vim tutorial中学到的小技巧,因为大部分内容均为基本操作,故不再另外写文整理。 # 第一讲 基本使用

1.1 移动光标

在正常模式(Normal)下(使用键可以进入正常模式),使用h j k l键进行光标的移动,刚开始觉得这个设定极为反人类,但熟练其操作后会发现这个设定极为巧妙,能更快第在屏幕内四处移动光标。 h: 光标向左移动; l: 光标向右移动; j: 光标向下移动; k: 光标向上移动.

小贴士:在所有移动操作前加上g,就可以实现相对屏幕行进行操作而不是实际行,如gj

1.2 VIM的进入和退出

在 Normal 模式下, :q!<Enter> : 退出编辑器,这种方式将会丢弃所有未写入的改动。 wq<Enter>: 保存文件并退出。

1.3 文本编辑

在 Normal 模式下, x: 删除光标所在位置的字符; X: 删除光标左侧位置字符; .: 可重复前一次操作; i: 在光标所在位置之前插入字符; a: 在光标所在位置之后插入字符; A: 在光标所在行末尾插入字符。

第二讲 删除撤销动作

2.1 动作

动作列表

w: 从当前光标位置移动到下一个单词起始处,不包括它的第一个字符; e: 从当前光标位置移动到单词末尾,包括最后一个字符; $: 从当前光标位置移动到当前行末; ge: 从当前光标位置移动到上一个单词末尾; b:从当前光标位置移动到上一个单词开头。

计数指定动作

  1. 在动作前输入数字会使该动作重复多次,e.g. :
  • 2w 将光标向后移动两个单词
  • 3e 使光标移向后移动到第三个单词末尾
  • 7perfect <ESC>将插入7个perfect单词
  1. 0:移动光标到行首

2.2 删除类命令

改变文本的命令通常由一个操作符和一个动作构成:

1
operator [number] motion
- operator 操作符 - [number] 可选操作,附加数字表示动作重复次数 - motion 动作,表示在所操作的文本上的移动 例如删除类命令:
1
d [number] motion
- d 删除操作符 dw: 删除至下一个单词起始处,不包括下一个单词的第一个字符; de: 删除至当前单词末尾,包括最后一个字符; d$: 删除至当前行末尾; 删除命令也可以搭配计数删除更多。 dd: 删除当前行; dd 命令同样可以在之前插入数字进行计数删除多行。

2.3 撤销类命令

u: 撤销最后执行的命令; U: 撤销对整行的修改。 CTRL-R: 撤销以前的撤销命令,恢复之前的操作结果

第三讲 插入替换更改

3.1 插入类命令

p: 将最后一次删除的内容插入当前光标之后, 类似于剪切功能。 o: 在光标当前行下方创建新的一行,并进入插入模式; O: 在光标当前行上方创建新的一行,并进入插入模式。

3.2 替换类命令

r[CHARACTER]: 输入 r 和一个字符替换光标所在位置的字符 R: 连续替换多个字符,与插入模式类似,不过每个输入的字符会替代光标当前字符,与键盘使用了 insert 键进入改写模式的情况类似

3.3 更改类命令

1
c [number] motion
  • c 操作符

cw: 更改文本直到该单词末尾; ce: 更改文本直到下一单词开始; c$: 更改文本直到行末。 更改命令执行后直接进入 insert 模式。

第四讲 定位查找

4.1 定位及文件状态

F[CHAR]: 光标移动到上一个 char 所指字母所在位置; f[CHAR]: 光标移动到下一个 char 所指字母所在位置; *: 光标移动到当前光标所指单词相同的下一个位置; #: 光标移动到当前光标所指单词相同的上一个位置; CTRL-g/G: 显示当前编辑文件中当前光标所在行位置以及文件状态信息; G: 光标跳转到文件最后一行; gg: 光标跳转到文件第一行; G[NUMBER]: 光标跳转到number表示的行号。

4.2 搜索类命令

/[STRING]: 正向查找string表示的字符串; ?[STRING]: 逆向查找string表示的字符串; CTRL-O  N:回到前一个位置; CTRL-I  n: 到下一个位置。

4.3 配对括号的查找

使用%可查找匹配对的括号) \ ] \ }: 将光标移动到左括号处,按下%,光标将跳转到匹配的右括号处,再按下一次可跳回原来的左括号处。 (这对程序员来说真是个福音~)

4.4 替换命令

:s/old/new: 在光标所在行第一次出现的 old 表示的字符串替换为新的字符串 new ; :s/old/new/g: 在光标所在行替换所有出现的 old 所表示的字符串替换为新的字符串 new ; :#,#s/old/new/g: 在两行内替换所有的字符串 old 为新的字符串 new ; :%s/old/new/g: 在文件内替换所有的字符串 old 为新的字符串 new ; :%s/old/new/gc: 进行全文替换时询问用户确认每个替换。

第五讲 文件操作

5.1 在VIM内部执行外部命令

:![COMMAND]: 执行command所代表的外部命令

5.2 保存文件

:w FILENAME: 将对文件的改动保存到一个文件中; v motion: w FILENAME: 将文件的部分内容保存到文件中: v 进入可视模式(Visual), motion 表示光标的移动,可选中文本,按下:后下方将出现'<,'>,输入w FILENAME将选中的文本保存在文件FILENAME中。可视选中后同样也可以进行批量删除操作。

5.3 提取合并文件

:r FILENAME: 提取磁盘文件 FILENAME 并将其插入到当前文件光标当前位置后; :r !command: 读取command命令的输出插入到当前文件光标当前位置后。

5.4 复制粘贴文本

进入 Visual 模式, 使用y进行复制,使用p进行粘贴

文本编辑部分整理至此。

顺便推荐几个网站: * VIM Adventures,这是一个用VIM操作来进行的游戏,不过免费版只能练习最基本的移动操作~ * Interative Vim tutorial,这是一个交互的类似于 vimtutor 的教程网站 * Interative Vim tutorial - sandbox这是上面那个教程网站给出的一个练习,右侧还有命令提示,可以说非常贴心了 * Vim Snake 一个基于Vim移动操作的贪吃蛇游戏

参考资料