VIM 命令
1. 滚屏
< Ctrl+u >将屏幕向前(文件头方向)翻滚半屏;
< Ctrl+d >将屏幕向后(文件尾方向)翻滚半屏。
可以在这两个命令之前加上一个数字n,则屏幕向前或向后翻滚n行。
并且这个值被系统记住,以后再用< Ctrl+u >和< Ctrl+d >命令滚屏时,还滚相应的行数。
2. 分页命令
< Ctrl+f >将屏幕向文件尾方向翻滚一整屏(即一页);
< Ctrl+b >将屏幕向文件首方向翻滚一整屏(即一页)。
同样也可以在这两个命令之前加上一个数字n,则屏幕向前或向后移动n页。
3. 状态命令
< Ctrl+G >命令显示在vi状态行上的vi状态信息。
包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比。
4. 附加命令
(1). 跳转命令
^命令
跳转到行首
$命令
跳转到行尾
b(begin)命令
跳转到当前单词的前面
e(end)命令
跳转到当前单词的后面
number%命令
跳转到number%处, 例如跳转到20%, 键入20%即可
%命令
匹配括号
(2). 插入命令
a命令
该命令用于在光标当前所在位置之后追加新文本。新输入的文本放在光标之后,在光标后的原文本将相应地向后移动。光标可在一行的任何位置。
A命令
该命令与a命令不同的是,A命令将把光标挪到所在行的行尾,从那里开始插入新文本。当输入A命令后,光标自动移到该行的行尾。
a和A命令是把文本插入到行尾的唯一方法。
o命令
该命令将在光标所在行的下面新开一行,并将光标置于该行的行首,等待输入文本。
要注意,当使用<Backspace>删除字符时只能删除从插入模式开始的位置以后的字符,对于以前的字符不起作用。
O命令
与o命令相反,O命令是在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本。
(3). 删除命令
在编辑文本时,经常需要删除一些不需要的文本,我们可以用<Backspace>键将输错或不需要的文本删除,但此时有一个限制就是当删到行头之后,再想删上面那行的内容是不可能的。
在命令模式下,Vi提供了许多删除命令。这些命令大多是以d开头的。常用的有:
x命令
删除光标处的字符。
若在x之前加上一个数字n,则删除从光标所在位置开始向右的n个字符。
X命令
删除光标前面的那个字符。
若在X之前加上一个数字n,则删除从光标前面那个字符开始向左的n个字符。
显然,这两个命令是删除少量字符的快捷方法。
dd命令
剪切(删除)光标所在的整行。
在dd前可加上一个数字n,表示删除当前行及其后n-1行的内容。
D或d$命令
删除从光标所在处开始到行尾的内容。
d0命令
删除从光标前一个字符开始到行首的内容。
Dw命令
删除一个单词。
若光标处在某个词的中间,则从光标所在位置开始删至词尾。同dd命令一样,可在dw之前加一个数字n,表示删除n个指定的单词。
5. 复制粘贴
排版命令: gg=G
(1)选择命令
按v进入可视模式(v按字符选择,V按行选择)
1). 用j、k控制选中的行
2). 按下ap选取一段('a' 'p'aragraph),按下~翻转这段文字的大小写。如果你想取消选取,按下<Esc>即可。
(3). 按下aw选取一个单词('a' 'w'ord)
(4). 按下ab 选取一块文本('a' 'b'lock)
(5). 按下as 选取一个句子(‘a’ sentence)
(2). 复制命令
dd命令
剪切当前行。
yy命令
拷贝当前行。
cc命令
剪切当前行并且进入插入模式。
D命令
剪切从光标位置到行尾到剪贴板。
Y命令
拷贝当前行。
C命令
和 D 类似,最后进入插入模式。
x命令
剪切当前字符到剪贴板。
s命令
剪切当前字符到剪贴板,最后进入插入模式。
(3). 粘贴命令
p命令
粘贴剪切板中的字符
(4)寄存器
如果你要从一个文件中复制出好几块独立的文本到另一个文件中去,单用上面的方法就不得不多次切换文件,存盘。
将这些独立的文本存到一个寄存器中去可以避免这种繁琐的切换。
复制时用["]+[寄存器名(字母寄存器是a-z)]+[y],例如:"ay,就是将当前选中的内容拷贝到a寄存器.
粘贴是用用["]+[寄存器名(字母寄存器是a-z)]+[p],例如:"ap,就是将a寄存器中的内容拷贝到当前位置
6. 光标控制
gg命令
跳到文件的首行
G命令
跳到文件的最后一行
6. 编辑多个文件
edit命令
先保存正在编辑的文件,用[:edit][filename]命令打开文件filename。
saveas命令
将当前正在编辑的文件另存为一个文件。
args命令
args *.*编辑当前目录所有文件
argdo[正则表达式] [ge] |update 用正则表达式去匹配所有文件,替换,然后保存所有文件
7. 分割窗口
split命令
将当前窗口分成上下两个窗口。
两次[CTRL+W]可以切换窗口。
vsplit命令
将当前窗口分成左右两个窗口。
两次[CTRL+W]可以切换窗口。
close 命令
关闭当前窗口。
only 命令
close all butthis(关闭除当前窗口以外的窗口)。
wall 命令
保存所有窗口打开的文件。
qall 命令
如果所有窗口打开的文件都已经保存,退出,如果有未保存的文件,跳转到对应的窗口中。
wqall 命令
保存并退出所有窗口。
8.折行
zc命令
折叠文本
zo命令
打开折叠文本
zr[R]命令
打开多层嵌套的折行
zm[M]命令
关闭多层嵌套的折行
]c 命令
向前定位不同之处。
[c 命令
向后定位不同之处。
diffupdate 命令
消除差异。
9. 文本替换
(%)substitute(s)命令
用法
:(%)s/from/to/[flags(g)]将from替换成to。g表示global。
\<用来指示一个单词的起始位置。
\>用来指示一个单词的结束位置。
10. Shell命令
:read(r) !(cmd) 执行cmd并读取它的输出
:write(2) !(cmd)执行cmd并并把当前缓冲区的内容作为它的输入
:shell 样打开一个新的shell
11. 查找文件
:edit . 显示当前目录的内容
<Enter> 在当前窗口中打开文件
o 打开一个水平分隔的窗口显示文件
v 打开一个垂直分隔的窗口显示文件
t 在一个新标签页中打开文件
:cd dirtory 切换到dirtory目录
:pwd 显示当前工作目录
:lcd dirtory 切换到局部工作目录dirtory
pwd 当前工作目录
find filename 查找filename,并跳转到filename文件
gf 光标置于想要跳转的文件名上,按下gf即跳转到改文件。
[CTRL+W]f可以替代gf,不同的是前者把窗口分成了两个。
sfind 可以替代[CTRL+W]f,效果一样。
:buffers(:ls)列出缓冲区列表。
编辑缓冲区
buffer [number]
sbuffer [number]在新窗口打开
:bnext/bprevious/bfirst/blast
同理,sbnext/sbprevious/sbfirst/sblast
tabnew filename 在新标签中编辑文件。
vertical sfind 垂直分割窗口查找文件
12. 快速键入
在Insert模式下可用的快捷键
<Ctrl-Home>到文件头
<PageUp> 向上滚屏
<Home> 到行首
<Shift-Left>向左移动一个word
<Ctrl-Left>向左移动一个word
<Shift-Right>向右移动一个word
<Ctrl-Right>向右移动一个word
<End> 到行尾
<PageDown>向下滚屏
<Ctrl-End>到文件尾