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进行粘贴

文本编辑部分整理至此。

顺便推荐几个网站:

参考资料