本文主要面向初次或偶尔使用Vim
进行文本编辑的朋友,内容以基础操作指令速查为主,旨在以较小篇幅覆盖尽可能多的基础和常见Vim
操作。
Vim
默认通过查看模式(Normal Mode)打开目标文件
vim <filepath>
在查看模式下,你可以用过键入:
进入Vim
界面下方的命令面板
:<command>
并通过追加<command>
对Vim
进行全局操作。
在退出Vim
时,你需要根据以下几种不同情形选择适当的命令:
:x
(exit)!wq
或:x!
(write and quit):q!
注:
:x
相比,在没有任何内容修改的情况下使用:wq
会更新目标文件的修改时间在Vim
的查看模式(Normal mode)下,你可以通过不同尺度的光标移动指令快速浏览和查看目标文件内容。
h, l
:以字符
为单位向左、右
移动光标位置f<char>
:(find)移动光标到下一个<char>
出现的位置w, b
:以word
为单位分别向下一个、上一个
连续字符移动,并使得光标指示单词的首个字符位置e
:将光标移动到当前单词的末尾字符位置*, #
:将光标移动下一个、上一个
出现当前单词的位置j, k
:以行
为单位分别向下、上
移动光标位置0, $
:分别将光标移动到所在行的首个字符
和末尾字符
gg
:直接移动光标到文本首行
G
:直接移动光标到文本尾行
<number>G
:移动光标到文本的第<number>
行ctrl + U, ctrl + D
:以半页
为单位分别向上、下
移动光标位置shift + H, shift + M, shift + L
:在当前页(屏幕)
内将光标移动到第一行、中间行、最后一行
zz
:以当前光标位置为中间行显示周围页(屏幕)
%
:移动光标到当前所在括号匹配域
的括号位置:/
:在全局命令面板中进入搜索模式(Search Mode)查找目标字符串,使用n, N
向下一个、上一个
匹配项移动x
:删除当前光标位置字符diw
:(delete inside word)删除光标所在单词dis
:(delete inside sentence)删除光标所在句子dd
:删除光标所在行
df<char> or dt<char>
:到当前行给定字符(包含/不包含
目标字符)d<移动指令>
:删除移动路径范围字符di<object>
:删除给定匹配域字符s
:(substitute)修改光标位置字符
(进入插入模式)r<target-char>
:(replace)修改光标位置字符
(保持查看模式)d
一致2. 删
章节中的d
替换为c
,也即在删除目标后进行自动切换为插入模式增加文本一般可以分为两种情况:
在获得复制得到的文本buffer
后,可通过在查看模式下键入p
,粘贴buffer
到光标位置。对于复制文本的情形,可根据实际情境选择不同方法实现:
yy
或Y
复制当前行y<移动指令>
复制光标移动范围文本,如
yj
复制当前当前行及下一行yl
复制下一个字符ygg
复制第一行到当前行等v
进入可视化模式,通过移动光标选中范围字符y
复制选中文本在查看模式下键入i
(insert,光标位置插入)或a
(append,光标位置后添加)进入插入模式
u
: undoctrl + r
: redo.
:在当前光标位置重复前一个执行指令<number><command>
:连续<number>
次执行<command>
, 如:
3j
:光标向下移动三行
3fc
:光标移动到下文中第3
次出现c
的位置3ic
:在光标位置进入插入模式,并连续插入3
个c
d3l
:删除当前行
及接下来的三行
c
:(change)改d
:(delete)删i
:(inside)在……内t
:(till)到……(不包括目标字符)f
:(find)到……(包括目标字符)w
:(word)单词s
:(sentence)句子t
:(tag)标签(
或[
或{
·:对应括号内字符串'
或"
:对应引号内字符串diw
:删除当前单词dis
:删除当前句子dt<char>
:删除从光标位置开始,到目标<char>
前的所有字符d
替换为c
,则在删除基础上进入插入模式在查看模式(Normal Mode)下键入v
进入可视化模式(Visul mode),并使用查看模式下的移动逻辑选取文本范围,选取文本被高亮显示。
在得到选取文本后,你可以在此基础上进行:
d
删除选中文本c
修改选中文本(删除并进入插入模式)y
复制选中文本