使用Vim也有一段时间了,虽然平时开发也会用到IDE,但是在Linux上进行系统的日常维护还是要经常使用Vim的,而且开发的时候能使用Vim也尽量使用Vim。废话不说了,下面总结一下自己经常使用的Vim的功能。
一、基本操作
一般模式切换到编辑模式
i ,I→ i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。
a,A→a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。
o,O→o 为『在目前光标所在的下一行处插入新的一行』, O 为在目前光标所在处的上一行插入新的一行。
r,R→r 只会取代光标所在的那一个字符一次,R会一直取代光标所在的文字,直到按下 ESC 为止。
一般模式切换到指令列模式
:w→将编辑的数据写入文件中。
:saveas <path/to/file>→另存为<path/to/file>。
:q→离开Vim。
:q!→强制离开不储存文件。
:wq→保存后离开。
:set nu→显示行号。
:set nonu→取消行号。
一般模式下的常用操作
hjkl→移动光标(←↓↑→),强烈推荐使用其来移动光标,使用多了就条件反射了。
:help <command>→ 显示相关命令的帮助。
Ctrl-f→屏幕『向下』移动一页,相当于 [Page Down]按键。
Ctrl-b→屏幕『向上』移动一页,相当于 [Page Up] 按键。
Ctrl-d→屏幕『向下』移动半页。可以这么记:键盘上d在f的左边,所以向下移动半页。
Ctrl-u→屏幕『向上』移动半页。
0→数字零,到行头。
$→到本行行尾。
^→到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)。
g_→到本行最后一个不是blank字符的位置。
gg→到第一行。
G→到最后一行。
/word→向光标之下寻找一个名称为 word 的字符串。例如要在文件内搜寻hello world这个字符串,就输入/hello world即可。
?word→向光标之上寻找一个字符串名称为 word 的字符串。
n→这个n通常配合/word或?word使用。代表『重复前一个搜寻的动作』。举例来说, 如果刚刚我们执行/hello world去向下搜寻hello world这个字符串,则按下 n 后,会 向下继续搜寻下一个名称为hello world的字符串。如果是执行 ?hello world的话,那么按下n则会向上继续搜寻名称为hello world的字符串。
N→与n刚好相反,为『反向』进行前一个搜寻动作。 例如 /hello world后,按下 N 则表示『向上』搜寻hello world。
:1,$s/word1/word2/gc→从第一行到最后一行寻找word1字符串,并将该字符串取代为word2,且在取代前显示提示字符给用户确认 (confirm) 是否需要取代。
x→删除当前光标所在的一个字符。
dd→剪切当前行,并把删除的行存到剪贴板里。
yy→复制游标所在的那一行。
p,P→p为将已复制的整行数据在光标下一行贴上,如果复制的不是整行,则在光标之后贴上。P则为贴在游标上一行或之前。
u→撤销(undo)。
Ctrl-r→反撤销(redo)。
cw→替换从光标所在位置后到一个单词结尾的字符。
gU→变大写。
gu→变小写。
dt"→删除所有的内容,直到遇到双引号"。
二、进阶操作
区块选择和块操作
v→字符选择,会将光标经过的地方反白选择。
V→行选择,会将光标经过的行反白选择。
Ctrl-v→区块选择,可以用长方形的方式选择。
y→将反白的地方复制起来。
d→将反白的地方剪切掉。
在所有行之前加东东: 0 <Ctrl-v> <Ctrl-d> I-- [ESC]
^→到行头
<Ctrl-v>→开始块操作
<Ctrl-d>→向下移动 (也可以使用hjkl来移动光标,或是使用%,或是别的)
I-- [ESC]→I是插入,插入“--”,按ESC键来为每一行生效。
^→到行头
<Ctrl-v>→开始块操作
<Ctrl-d>→向下移动 (也可以使用hjkl来移动光标,或是使用%,或是别的)
I-- [ESC]→I是插入,插入“--”,按ESC键来为每一行生效。
在所有行之后加东东: <C-v> <C-d> $ A
<C-v>→开始块操作
<Ctrl-d>→向下移动 (也可以使用hjkl来移动光标,或是使用%,或是别的)
$ 到行最后
A 输入字符串,按ESC。
<Ctrl-d>→向下移动 (也可以使用hjkl来移动光标,或是使用%,或是别的)
$ 到行最后
A 输入字符串,按ESC。
多文件编辑
1.vim还没有启动的时候:
在终端里输入vim file1 file2 ... filen 便可以打开所有想要打开的文件。此时:
:n→编辑下一个文件。
:N→编辑上一个文件。
:files→列出目前这个vim所开启的所有文件。
2.vim已经启动后:
输入:e file 便可以再打开一个文件,并且此时vim里会显示出file文件的内容。此时:
输入:e file 便可以再打开一个文件,并且此时vim里会显示出file文件的内容。此时:
:bn→编辑下一个文件。
:bp→编辑上一个文件。
:files→列出目前这个vim所开启的所有文件。
多窗口编辑
:sp→创建分屏(:vsp创建垂直分屏)。
<Ctrl-w><dir>: dir就是方向,可以是hjkl或是←↓↑→中的一个,其用来切换分屏。
<C-w>_ ( 或 <C-w>| ): 最大化尺寸(<C-w>| 垂直分屏)。
<C-w>+ ( 或 <C-w>- ): 增加尺寸。
光标移动
光标移动的操作都是在一般模式下进行的。
w→到下一个单词的开头。
e→到本单词的结尾。
如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成。
如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。
为程序员量身定做的光标移动:
% : 匹配括号移动,包括 (, {, [
* 和 #: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
以上操作可以覆盖平时Vim基本操作的80%了,只要勤加练习,即可熟练掌握了。