Post

vimtutor

通过vimtutor来入门vim

vimtutor

第一课

1.1 移动光标

使用小写 hjkl 四个键来左下上右式地移动一个字符的位置。

提示:h键在左边, 可以向左移动。l 键在右边, 可以向右移动。j 键可以向下移动(k键向上移动)。

1.2 退出vim

q! : 命令模式下输入 :q! 强制退出vim。(这一招会强制退出vim到命令行终端, 同时放弃所有没有保存的修改)

1.3 文本编辑 - 删除

x : 正常模式下, 按一下 x 删除当前光标下一个字符。

1.4 文本编辑 - 插入

i : 正常模式下, 按一下 i 进入插入模式, 之后每一次按下的键对应的字符都会被插入到光标所在位置。

1.5 文本编辑 - 追加

A : 正常模式下, 按一下 A, 光标移动到该行末尾, 并进入插入模式。

1.6 编辑一个文件

:wq : 保存一个文件并退出

vi filename : 在命令行终端中, 输入命令 vi filename 并回车, 将进入vim, 打开文件名为 filename 的文件, 同时进入正常模式。

第二课

2.1 删除命令

dw :删除一个单词。

2.2 其他的删除命令

d$ :删除到当前行末尾。

2.3 操作符和移位

有些命令由操作符和移位字符组成, 例如: d motion

常用移位字符有:

  • w :移动到下一个单词开始位置。
  • e :移动到当前单词的末尾。
  • $ :移动到当前行的末尾。

例子: dw 删除一个单词(包括空格), de 删除一个单词(不包括空格), d$ 从光标处开始删除内容直到该行结尾。

2.4 定量移位

#motion :在移位字符前加上一个数字, 表示移位指定数目次。

例子: 2w 移位两个单词, 到第三个单词开始字符, 2e 移位两个单词, 到第二个单词最后一个字符, 0 移位到当前行首, $ 移位到当前行尾。

2.5 移位删除

d[[#]motion] :结合删除操作符、数字、移位字符来删除指定数量的内容。

例子: d2w 删除两个单词(包括空格)。

2.6 删除行

[#]dd :整行删除太常见了, vim设计dd来删除一整行。

例子: dd 删除当前行, 2dd 删除当前行在内的连续两行。

2.7 撤销命令

u :撤销上一次操作。

U :把当前行恢复到修改前(再按就整体恢复到修改后), 是一个新的操作, 并不是撤销操作。

CTRL+r :重做被撤销的命令。

第三课

3.1 粘贴命令

p :把之前删除的或者拷贝的内容粘贴到当前光标后或下一行。

3.2 替换命令

r[x] : 把当前字符替换为 [x], 但是不进入插入模式。

3.3 修改命令

ce : 删除从当前字符直到到当前单词末尾的地方, 不包括空格, 同时进入插入模式。

3.4 更多修改命令

c[#]motion : 删除指定数目的内容, 同时进入插入模式。

第四课

4.1 光标位置和文件状态

CTRL+g : 显示文件名, 光标在文件中的位置以及文件状态。

G : 跳转到文件最后一行第一个字符。

gg : 跳转到文件第一行第一个字符。

[#]G : 跳转到指定行。

4.2 搜索命令

/ : 在正常模式下, 直接输入 /, 然后在最后一行第一个字符会显示 /, 表示vim要搜索, 接下来键盘上输入的字符都是搜索字符串, 回车后vim立刻从当前光标处开始, 搜索并跳转到第一个匹配点。

? : 同 / 但是从文件末尾往文件开始逆向搜索。

n : 跳转到下一个搜索匹配点。

N : 跳转到上一个搜索匹配点。

CTRL+o : 跳转到前一次跳转开始的地方(除了上下左右移动以外的移动都是跳转)。

CTRL+i : 跳转到后一次跳转开始的地方。

4.3 搜索括号

% : 在正常模式下, 直接输入 %, vim会搜索并跳转到与当前行第一个括号相匹配的下一个括号位置(可能匹配点在之后几行), 包括大括号, 小括号, {}, (), []

4.4 (另一种)替换命令

  • :s/old/new : 把 old 换成 new, 只替换当前行且光标以后第一次出现的地方。
  • :s/old/new/g : 把 old 换成 new, 只替换当前行光标以后所有出现的地方。
  • :#,#s/old/new : 把 old 换成 new, 只替两个#指定的行之间所有出现的地方。
  • :%s/old/new : 把 old 换成 new, 替换整个文件所有出现的地方。
  • :%s/old/new/gc : 把 old 换成 new, 替换整个文件所有出现的地方并提示是否替换。

第五课

5.1 执行外部命令

:!CMD :在命令行终端里执行CMD命令, 并且挂起vim, 显示命令结果, 按回车返回vim。

5.2 保存文件

:w : 保存当前文件。

:w [filename] : 将当前文件内容另存为 filename 命令的文件。

5.3 选择要保存的文本

v : 正常模式下, 按 v 进入可视化模式, 然后移位选择一些文本, 此时可以按 d 删除选择的文本, 也可以按 y 复制选择的文本, 还可以按 : 结束可视化选择并进入命令模式, 再输入 w TEST 可以把可视化选择的文本保存为名为 TEST 的文件。

5.4 提取文件内容与合并文件

:r TEST : 将 TEST 文件内容拷贝到当前光标处。

:r !ls : 将当前目录下所有文件名称一个文件名一行地插入到当前光标下。

第六课

6.1 打开命令

o : 在当前行以下另起一行并进入插入模式。

O : 在当前行以上另起一行并进入插入模式。

6.2 追加命令

a : 把光标移动到当前光标字符后, 并进入插入模式。

A : 把光标移动到该行末尾, 并进入插入模式。

6.3 (另一种)替换命令

R : 进入替换模式, 之后输入的每一个字符都会替换掉原内容的一个字符, 按一下 Esc 键退出替换模式到正常模式。

6.4 拷贝粘贴文本

y : 进入可视化模式, 选择一些文本, 按 y 保存选择的文本, 并退出可视化模式到正常模式。

p : 将刚刚用 y 保存的文本粘贴插入到当前光标处, 但不进入插入模式。

yy : 拷贝整行。

yw : 拷贝一个单词。

6.5 设置选项

:set option : 设置vim的配置选项。

常用的option配置选项有:

  • hls 高亮显示搜索命中
  • ic 忽略大小写
  • is 增量搜索

配置选项前加上no表示取消此配置选项, 例如: /ignore\c

第七课

7.1 查看帮助文档

<HELP> 键, <F1> 键, :help 命令都可以查看帮助。

CTRL+w : 在vim中不同的窗口间跳转。

:q : 退出当前vim窗口。

:help subject : 查看subject的帮助, 如: help w, :help c_CTRL-D, :help insert-index

7.2 创建启动脚本

~/.vimrc : 当前用户默认的vim启动脚本, 可以在脚本里启用或停用特定功能。

$VIMRUNTIME/vimrc_example.vim : 参考启动脚本。

:help vimrc-intro : 查看启动脚本的帮助。

7.3 自动完成

CTRL+d : 自动将可能的命令或参数在vim界面最下方临时显示出来。

<TAB> : 按顺序将这些可能性补全在当前命令上。

This post is licensed under CC BY 4.0 by the author.