VIM基础操作
插入命令
i 在当前位置前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
移动命令
h 左移一个字符
l 右移一个字符
k 上移一个字符
j 下移一个字符
注:以上四个命令可以配合数字使用,比如20j就是向下移动20行,5h就是向左移动5个字符,
在Vim中,很多命令都可以配合数字使用,比如删除10个字符10x,
在当前位置后插入3个!,3a!<Esc>,这里的Esc是必须的,否则命令不生效。
撤销重做命令
u撤销(Undo)
Ctrl+r 重做(Redo),即撤销的撤销。(vsvim不可用)
缩进命令
多行缩进:使用shift+v选中当前行,然后使用5j选中当前行到之后5行,
如果想统一右缩进5个tab,则使用5> 若想统一右缩进,则使用5<
其他基础命令
% 括号匹配 以匹配一个括号为目的移动,用命令"%"跳转到与当前光标下的括号相匹配的那一个括号上去。
如果当前光标在"("上,它就向前跳转到与它匹配的")"上,如果当前在")"上,它就向后自动跳转到匹配的"("上去.
/text 查找text,按n健查找下一个,按N健查找前一个。
要查找作为独立单词的"the"使用如下命令:"/the\>"。"\>"是一个特殊的记法,它只匹配一个word的结束处。
近似地,"\<"匹配到一个word的开始处。这样查找作为一个word的"the"就可以用:"/\"。
x删除当前字符
dd删除当前行 同样代表剪切
yy复制当前行
p在当前行下一行粘贴 shift+p当前行前一行粘贴
VIM进阶操作
移动命令
gg 移动到文件头。
G(shift + g) 移动到文件尾。
f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符。
跳到之后位置的指定行,冒号+行号,回车,比如跳到当前位置之后的240行就是 :240回车。
另一个跳到指定行的方法是行号+G,比如230G跳到230行。使用命令" `` "可以使你跳回到刚才的出发点。
"ma" 将当前光标下的位置名之为标记"a"。从a到z一共可以使用26个自定义的标记。
要跳转到一个你定义过的标记,使用命令" `marks "marks就是定义的标记的名字。
命令" 'a "使你跳转到a所在行的行首," `a "会精确定位a所在的位置。命令:":marks"用来查看标记的列表。 命令delm!删除所有标记。
^ 移动到本行第一个非空白字符上。
0(数字0)移动到本行第一个字符上,
$ 移动到行尾 3$ 移动到下面3行的行尾
w.向前移动一个单词(光标停在单词首部),如果已到行尾,则转至下一行行首。b 向后移动一个单词 2b 向后移动2个单词
以下四个命令在vsvim中不可用:
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
Ctrl + f 向下滚动一屏
Ctrl + b 向上滚动一屏
删除命令
X 删除当前字符的前一个字符。
dj 删除上一行
dk 删除下一行
10d 删除当前行开始的10行。
D 删除当前字符至行尾。
kdgg 删除当前行之前所有行(不包括当前行)
jdG(jd shift + g) 删除当前行之后所有行(不包括当前行)
:1,10d 删除1-10行
:11,$d 删除11行及以后所有的行
cw 删除当前单词并进入insert模式
ra 替换当前字符为a
替换命令
ra 将当前字符替换为a,当期字符即光标所在字符。
:s/old/new/ 用old替换new,替换当前行的第一个匹配
:s/old/new/g 用old替换new,替换当前行的所有匹配
:%s/old/new/ 用old替换new,替换所有行的第一个匹配
:%s/old/new/g 用old替换new,替换整个文件的所有匹配
ddp交换当前行和其下一行
xp交换当前字符和其后一个字符
剪切命令
ndd 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴
:1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。
:1, 10 m 20 将第1-10行移动到第20行之后。