命令历史
以:和/开头的都有历史记录,可以首先键入:或/后按上下键来选择历史命令
注意: 可视模式先选择内容 需要使用键盘来控制, SecureCRT等远程连接工具的鼠标选中无效
vim的几种模式
模式 | 进入操作 | 左下角显示 |
---|
正常 | 可按Esc(或接着: )进入命令行 | 文件名或为空 |
插入 | 正常模式下,按 i,o,a(或者大写)进入 | – INSERT – |
可视 | 正常模式下,按v可以进入 | – VISUAL – |
视行 | 正常模式下,整行整行选中,然后按 Ctrl+v可以进入 | – VISUAL BLOCK – |
替换 | 正常模式下(按Esc),按R进入,按Esc退出 | – REPLACE – |
启动vim
命令 | 含义 |
---|
vim | 直接启动vim |
vim -b | 二进制模式 |
vim file | 启动vim并创建名为filename的文件 |
vim file1 file2 file3 | 启动vim并同时打开多个文件 |
vim -r file | 恢复上次异常退出的文件 |
vim -R file | 只以只读的方式打开文件,但是可以强制保存 |
vim -M file | 只以只读的方式打开文件,但是不可强制保存(完全只读,不能做任何的修改,也不能保存甚至强制保存) |
保存与退出
下面的操作都比较重要,也常用到,含有!的皆有强制之意.
命令 | 含义 |
---|
:w(:w +filename) | 保存文件内容,但不退出vim,将内存缓冲区的数据,写入到启动vim时指定文件中。加fliename 表示保存到相应文件(后面皆是如此) |
:w!(:w +filename) | 强制写(覆盖)原有文件,特别对于源文件访问权限不允许时(例如原有文件为只读文件)。仅当用户为文件的user,root不受限制。 |
:wq | 与:w有相同之处,保存文件内容后,退出vim |
:wq!(:w +filename) | 强制保存文件内容后,退出vim |
ZZ | 功能同:wq,只需进入正常模式(Esc)后按两个Z(大写),无需:也无需Enter |
:q | 未做任何编辑处理而退出vim,可使用此命令。如果已经做过编辑,vim不允许用户使用q命令退出并抛出警告:No write since last change (:quit!overrides) |
:q! | 强制退出编辑器,放弃编辑处理的结果。适用于确实不需要保存文件的时候 |
:f filename | 改变编辑的文件名,这时候再保存相当于另存为 |
:save as filename | 另存为 |
光标移动
在insert模式下
vim中分段默认Enter隔开一行,正常模式下,hljk分别代表“左右下上”(注意是下上,不是上下)
命令 | 含义 |
---|
h | 左移 |
l | 右移 |
j | 下移 |
k | 上移 |
0 (零) | 移到行首 |
$ | 移到行尾 |
gg | 移到文件开头 |
G | 移到文件末尾 |
nG | 移到第n行 |
n% | 移到文件n%的位置 |
H | 移到当前屏幕最顶上一行 |
L | 移到当前屏幕最底下一行 |
M | 移到当前屏幕最中间一行 |
( | 移到上句 |
) | 移到下句 |
{ | 移到上段 |
} | 移到下段 |
fa | 移到本行下个a |
Fa | 移到本行上个a |
e(E) | 移到下个单词(包括标点),光标停留在单词的末尾(若为大写忽略标点) |
b(B) | 移到上个单词(包括标点),光标停留在单词首字母 (若为大写忽略标点) |
Ctrl+f(forward) | 下翻一屏 |
Ctrl+b(backward) | 上翻一屏 |
Ctrl+d(down) | 下翻半屏 |
Ctrl+ u(up) | 上翻半屏 |
复制命令
命令 | 含义 |
---|
y | 在visual模式下复制选中的所有内容(先切换到visual模式) |
yy(或者Y) | 复制当前整行 |
ygg | 复制光标以前所有行 |
yG | 复制光标以后所有行 |
y$ | 复制光标字符到行尾 |
y0 | 复制光标字符到行首 |
粘贴命令
- p(小写) 在光标之后粘贴
- P(大写) 在光标之前粘贴
插入命令
命令 | 含义 |
---|
i | 在当前位置的前面,插入 |
a | 在当前位置的后面,插入 |
I | 在当前行的行首,插入 |
A | 在当前行的行尾,插入 |
o | 当前行行后,插入一行 |
O | 当前行行前,插入一行 |
删除(剪切)命令
(与上面复制,同理,多了个x而已)
命令 | 含义 |
---|
d | 删除visual模式下,选中的所有内容(先切换到visual模式) |
dd | 删除当前整行 |
dgg | 删除光标以前所有行 |
dG | 删除光标以后所有行 |
d$(或者D) | 删除光标字符到行尾 |
d0 | 删除光标字符到行首 |
dx | 删除当前字符 |
d3x(同时按) | 删除光标向后3个字符 |
d[n]h | 删除光标左边 一个或多个字符 |
d[n]l | 删除光标右边 一个或多个字符 |
10dd | 删除10行(包括本行) |
:1,10d | 删除1-10行 |
:10,$d | 删除第10行及之后的所有行 |
:1,$d | 删除所有行(即全部内容) |
撤销与恢复
在正常模式下
命令 | 含义 |
---|
u(或者undo) | 撤销 |
:undo 5 | 撤销5个改变 |
:undolist | 你的撤销历史 |
U | 撤销当前行中的改动 |
Ctrl+r | 恢复 |
:earlier 3s/3m/3h | 回退 |
:later 5s/5m/5h | 前进 |
查找命令
命令 | 含义 |
---|
/text: | 在光标后面 文本中查找 text |
?text: | 在光标前面 文本中查找 text |
n: | 向前查找下一个(已经查找到第一个) |
N: | 向后查找下一个(已经查找到第一个) |
set ignorecase | 忽略大小写的查找 |
set noignorecase | 不忽略大小写查找 |
set hlsearch | 高亮搜索结果,所有结果都显示高亮 |
set nohlsearch | 关闭高亮搜索 |
nohlsearch | 关闭当前高亮显示,再次搜索或者按n(或N)时,再次显示高亮 |
/pattern/+number: | 光标停在pattern行后面第number行上 |
/pattern/-number: | 光标停在pattern行前面第number行上 |
窗口命令
多窗口中的文件命令
命令 | 含义 |
---|
:e file(e和open一样,可替代) | 关闭当前编辑的文件(需先保存),打开新文件(如果文件修改未保存,vim会发出警告) |
:e! file | 强制关闭当前编辑文件(放弃保存),打开新文件 |
:e# | 回到刚才编辑的文件(文件切换,需先保存当前文件),实用 |
:e!# | 强制回到刚才编辑的文件(放弃保存) |
:split file(new file) | 新窗口中打开文件(窗口是横向的) |
:vsplit file(new file) | 新窗口中打开文件(窗口是纵向的) |
:bn | 切换到下一个文件(其实是缓冲区) |
:bp | 切换到上一个文件(其实是缓冲区) |
调整窗口位置
命令 | 含义 |
---|
Ctrl+w p | 切换到前一个窗口 |
Ctrl+w h(l,j,k) | (一般Ctrl+w j(k)多一些)切换到左(右,下,上)窗口 |
Ctrl+w H(L,J,K) | 将当前窗口 移动到最左(右,下,上)面 |
Ctrl+w r | 旋转窗口的位置 |
Ctrl+w T | 将当前窗口移动到新的标签页上 |
调整窗口大小
命令 | 含义 |
---|
:browse e | 打开一个文件浏览器,让你选择要编辑的文件 |
:Sex | 水平分割一个窗口,浏览文件系统 |
:Vex | 垂直分割一个窗口,浏览文件系统 |
小窗口的关闭
命令 | 含义 |
---|
ZZ(常用) | 保存并退出 |
:q | 如果是最后一个窗口,将退出vim |
:close | 关闭窗口,最后一个窗口不能用此命令,防止意外退出vim |
:only | 只保留当前窗口,关闭其它窗口 |
:wall | 对所有修改过的窗口进行保存 |
:qall | 关闭所有窗口并退出 |
替换
命令 | 含义 |
---|
:s/old/new | 用new替换当前行第一个old。 |
:s/old/new/g | 用new替换当前行所有的old |
:n1,n2s/old/new/g | 用new替换文件n1行到n2行所有的old。 |
:%s/old/new/g | 用new替换文件中所有的old。 |
:%s/^/xxx/g | 在每一行的行首插入xxx,^表示行首。 |
:%s/$/xxx/g | 在每一行的行尾插入xxx,$表示行尾。 |
%s/old/new/gc | 所有替换命令末尾加上c, 每个替换都将需要用户确认。 加上i则忽略大小写(ignore)。 |
分屏编辑
- vim -o file1 file2:水平分割窗口,同时打开file1和file2
- vim -O file1 file2:垂直分割窗口,同时打开file1和file2
评论前必须登录!
注册