vim的学习曲线相当大,所以,如果你一开始看到的是一大堆VIM的命令分类,必须经过长时间的练习,
才能掌握。学会vim并且使它会成为你最后一个文本编辑器。
基本上vim分为三种模式,分别是『一般指令模式』、『编辑模式』与『指令列命令模式』。
这三种模式的作用分别是:
一般指令模式
以vim打开一个文档就直接进入一般指令模式了(这是预设的模式,也简称一般模式)。
在这个模式中,你可以使用『上下左右』按键来移动游标,你可以使用『删除字节』
和『删除整列』来处理档案内容,也可以使用『复制、粘帖』来处理你的文件资料。
编辑模式
在一般指令模式中可以进行、复制、粘帖等等动作,但是却无法编辑文件的内容。要等
你按下『i,I,o,O,a,A,r,R』等任何一个字母之后才会进入编辑模式。而要返回
一般指令模式,则必须要按下『ESC』按键才可以退出编辑模式。
指令命令模式
在一般模式中,输入『:/?』三个中的任何一个按钮,就可以将游标移动到最低下
那一列。在这个模式当中,可以提供你『搜寻资料』的动作,而读取、存档、大量取代
字元、离开vim、显示行号等等动作则是在此模式中达成的!
按键 | 作用 |
---|---|
h或向左的方向键 | 向左移动游标一个字节 |
j或向下的方向键 | 向下移动游标一个字节 |
k或向上的方向键 | 向上移动游标一个字节 |
l或向上的方向键 | 向上移动游标一个字节 |
注:如果你将右手放在键盘上,你会发现hjkl是排列在一起的,因此可以使用这四个按
键来移动游标。如果你想要进行多次移动的话,例如向下移动30列,可以使用"30j"的组合键,
亦即加上你想要进行的次数,按下动作即可。
按键 | 作用 |
---|---|
Ctrl+f | 屏幕向下移动一页 |
Ctrl+b | 屏幕向上移动一页 |
Ctrl+d | 屏幕向下移动半页 |
Ctrl+u | 屏幕向上移动半页 |
+ | 移动游标到非空白字节的下一列 |
- | 移动游标到非空白字节的上一列 |
n<space> | n表示数字,游标会向右移动这一行的n个字节。 |
0或功能键Home | 数字0,移动到行首。 |
$或功能键End | 移动到行尾 |
H | 游标移动到屏幕最上方那一行的第一个字节 |
M | 游标移动到屏幕中央那一行的第一个字节 |
L | 游标移动到屏幕最下方那一列的第一个字节 |
G | 游标移动到文件的最后一行 |
nG | n为数字,游标移动到这个文件的第n行。 |
gg | 游标移动到这个文件的第一行,相当于1G |
n<Enter> | n为数字,游标向下移动n行 |
按键 | 作用 |
---|---|
/word | 向游标之下寻找一个名称为word的字符串。 |
?word | 向游标之上寻找一个名称为word的字符串 |
n | n为英文按键。代表『重复之前一个搜寻的动作』 |
N | N为英文按键。代表『反向重复之前一个搜寻的动作』 |
:n1,n2/word1/word2/g | n1与n2为数字,在第n1与n2行之间按寻找word1这个字符串,并将该字符串取代为word2. |
:1,\(s/word1/word2/g |从第一行到最后一行寻找word1字符串,并将字符串替换为word2 :1,\)s/word1/word2/gc | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(且在替换前显示提示字符给使用者 |
按键 | 作用 |
---|---|
x,X | 在一行当中,x为向后删除一个字节,X为向前删除一个字节。 |
nx | n为数字,连续向后删除n个字节 |
dd | 删除游标所在行 |
ndd | n为数字,删除游标所在行向下的n行 |
d1G | 删除游标所在到第一行的所有内容 |
dG | 删除游标所在到最后一行的所有内容 |
d$ | 删除游标所在到本行最后一个字节 |
d0 | 删除游标所在到本行第一个字节 |
yy | 复制游标所在的那一行 |
nyy | n为数字,复制游标所在的向下n行 |
y1G | 复制游标所在到第一行的所有内容 |
yG | 复制游标所在到最后一行的所有内容 |
y0 | 复制游标所在到本行行首的内容 |
y$ | 复制游标所在到本行行尾的内容 |
p,P | p为将已复制的内容在游标下一列粘帖,P则是在游标上一列粘帖 |
J | 将游标所在行与下一行合并 |
c | 重复删除多个资料, 例如向下删除10行,[10cj] |
u | 复原前一个动作 |
Ctrl+ r | 重做上一个动作 |
. | 重复前一个动作 |
注:u与Ctrl+r 是很常用的指令。一个是复原,另一个则是重做一次!
按键 | 作用 |
---|---|
i,I | 进入插入模式,i为『从目前游标所在处插入』。I为『在目前所在行的第一个非空白字节处开始插入』 |
a,A | 进入插入模式,a为『从目前游标所在处的下一个字节插入』。A为『从游标所在行的最后一个字节处开始插入』 |
o,O | 进入插入模式,o为『从目前游标所在处的下一行插入新的一行』。O为『在目前所在处的上一行插入一行新行』 |
r,R | 进入替换模式,r只会替换游标所在处的那一个字节,R会一直开启替换模式,直到按下ESC为止。 |
[ESC] | 退出编辑模式,回到一般指令模式 |
按键 | 作用 |
---|---|
:w | 将编辑的内容写入硬件中 |
:w! | 若文件属性为只读时,强制写入该文件。不过,到底能不能写入,还是跟你对该文件的权限有关。 |
:q | 离开vim 不保存 |
:q! | 强制离开vim且不保存修改 |
:wq | 保存后离开vim |
ZZ | 若文件修改过,则保存离开,否则不保存离开。 |
:w [filename] | 将编辑的文件储存成另一个文件 |
:r [filename] | 在编辑的文件中,读入另一个文件的内容。 |
:n1,n2 w [filename] | 将n1到n2的内容储存成一个filename文件 |
:!command | 暂时离开vim到指令模式下执行shell中command的结果 |
区块选择的按键 | 作用说明 |
---|---|
v | 字节选择,会将游标经过的地方反白选择 |
V | 行选择,会将游标经过的行反白选择 |
Ctrl + v | 区块选择,可以用长方形的方式选择内容 |
y | 将反白的内容复制起来 |
d | 将反白的内容删除掉 |
p | 将刚刚复制的区块,在游标所在处粘帖上 |
同时开启xxx1、xxxx2和xxxx3三个文件。
vim xxx1 xxxx2 xxxx3
按键 | 说明 |
---|---|
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 列出目前这个vim开启的所有文档 |
分屏模式下的按键功能说明
按键|功能说明
:-:|:-:
:sp[filename]|开启一个新视窗,如果有filename,表示在新视窗开启一个新文件,否则表示两个视窗为同一个文件内容。
Ctrl+w+j|游标移动到下面的窗口
Ctrl+w+k|游标移动到上面的窗口
Ctrl+w+q|关闭窗口
各种插入模式
a -在光标后插入
o -在当前行后插入一个新行
O -在当前行前插入一个新行
cw -替换从光标所在位置后到一个单词结尾的字符
简单的移动光标
0 -数字零,到行头
^ -到本行第一个不是blank字符的位置。
$ -到本行行尾
g_-到本行最后一个不是blank字符的位置。
/pattern -搜索pattern的字符串
拷贝/粘帖
p -在当前位置之后粘帖
P -在当前位置之前粘帖
yy -拷贝当前行相当于dd+p
Undo
u -取消上一步的操作>
<C-S-r> 重做上一步操作
打开/保存/退出/改变文件
:e
下面,让我们看看vim是怎么重复自己的:
你要让你的光标移动更有效率,你一定要了解下面的这些命令,千万别跳过。
按单词移动:
- w 到下一个单词的开头。
- e 到下一个单词的结尾。
- E 到下一个由blank字符分隔符结尾的单词的结尾。
- W 到下一个由blank字符分隔符开头的单词的开头。
![e/w下面,让我们来看看更迅速的光标移动:
你一定要记住光标的移动,因为很多命令都可以和这些移动光标的命令连动。很多命令
都可以像下面这么做:
<start position><command><end position>
例如:0y$
命令意味着:
ye
,从当前位置拷贝到本单词的最后一个字符。y2/foo
,来拷贝2个"foo"之间的字符串。还有很多时候,你并不一定要按y才会拷贝,下面的命令也会拷贝:
可视化选择是一个很有意思的命令,你可以先按v,然后移动光标,你就会看到文本被选择
,然后你可以d
,也可以y
,也可以gU
gu
等等。
还有很有用的命令是dt"
删除" "内的所有内容,直到遇到双引号”
在visual模式下,这些命令很强大,其命令格式为:
<action>a<object>和<action>i<object>
假设你有一个字符串(map(+)("foo")) 而光标在第一个o的位置。
块操作,典型的块操作:0 <C-V> <C-d> I-- [ESC]
在Insert模式下,你可以输入一个单词的开头,然后按<C-p>或是<C-n>,
自动补齐功能就出现了……
示例
在一个只有一行且这一行只有"1"的文本中,键入如下命令:
qayp<C-a>q
- qa 开始录制
- yp 复制行
- <C-a> 增加1
- q 停止录制
- @a 在1下面写下2
- @@ 在2下面写下3
现在做100@@会创建新的100行,并把数据增加到103
前面,我们看到了<C-v>的示例,我们可以用V和v,一但选好了,你可以做下面
的事:
在所有被选择的行后面加上点东西:
下面是主要的命令,你可以使用VIM的帮助,:help split
你可以参考网上的分屏文章。
- :split
- <C-w><dir> :dir就是方向,可以是hjk或是方向键中的一个,启用来
切换分屏- <C-w>_(或是<C-w>|): 最大化
- <C-w>+ (或是<C-w>-):增加尺寸
END
原文:https://www.cnblogs.com/pulp/p/9729055.html