Linux基础(4) - Vim编辑器

这一篇讲常见的vim命令

几乎所有linux系统都会配置vim编辑器

掌握vim可以使linux上编程更方便

1、vim的几种模式

模式 进入操作 左下角显示
正常 可按Esc(或接着: )进入命令行 文件名或为空
插入 正常模式下,按 i,o,a(或者大写)进入 – INSERT –
可视 正常模式下,按v可以进入 – VISUAL –
视行 正常模式下,整行整行选中,然后按 Ctrl+v可以进入 – VISUAL BLOCK –
替换 正常模式下(按Esc),按R进入,按Esc退出 – REPLACE –


2、启动vim

命令 含义
vim 直接启动vim
vim file 启动vim并创建名为filename的文件
vim file1 file2 file3 启动vim并同时打开多个文件
vim -r file 恢复上次异常退出的文件
vim -R file 只以只读的方式打开文件,但是可以强制保存
vim -M file 只以只读的方式打开文件,但是不可强制保存(完全只读,不能做任何的修改,也不能保存甚至强制保存)


3、保存与退出

下面的操作都比较重要,也常用到,含有!的皆有强制之意.

命令 含义
: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 另存为


4、光标移动

在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) 上翻半屏

对于光标,当然还少不了标记。
标记等可以快速移动,通过Ctrl+o(后退)、Ctrl+i(前进),达到类似浏览器的功能

命令 含义
m{a-z} 局部标记,标记光标所在位置,用于当前文件
m{A-Z} 全局标记,标记光标所在位置。退出vim后重启,标记依然有效
:marks 显示所有标记
:marks a b 删除标记a,b
:marks a-c 删除标记a,b,c
:marks a c-f 删除标记a,c,d,e,f
:delmarks 删除缓冲区所有标记
:help mark-motion 查看更多关于mark的知识
Ctrl+o 后退回到上一个标记
Ctrl+i 前进前往下一个标记


5、复制命令

命令 含义
y visual模式下复制选中的所有内容(先切换到visual模式)
yy(或者Y) 复制当前整行
ygg 复制光标以前所有行
yG 复制光标以后所有行
y$ 复制光标字符到行尾
y0 复制光标字符到行首


6、粘贴命令

  • p(小写) 在光标之后粘贴
  • P(大写) 在光标之前粘贴

7、插入命令

对于ia来说,如果是小写ia,则是在当前位置的前面/后面插入,对于IA来说,则是在当前行的行首/行尾插入;

对于oO来说,分别是在当前行行后/行前插入一行,注意O是行后,o是行前

命令 含义
i 在当前位置的前面,插入
a 在当前位置的后面,插入
I 在当前行的行首,插入
A 在当前行的行尾,插入
o 当前行行后,插入一行
O 当前行行前,插入一行


8、删除(剪切)命令

(与上面复制,同理,多了个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 删除所有行(即全部内容)


9、撤销与恢复

在正常模式下

命令 含义
u(或者undo) 撤销
:undo 5 撤销5个改变
:undolist 你的撤销历史
U 撤销当前行中的改动
Ctrl+r 恢复
:earlier 3s/3m/3h 回退
:later 5s/5m/5h 前进


10、查找命令

命令 含义
/text: 在光标后面 文本中查找
?text: 在光标前面 文本中查找
n: 向前查找下一个(已经查找到第一个)
N: 向后查找下一个(已经查找到第一个)
set ignorecase 忽略大小写的查找
set noignorecase 不忽略大小写查找
set hlsearch 高亮搜索结果,所有结果都显示高亮
set nohlsearch 关闭高亮搜索
nohlsearch 关闭当前高亮显示,再次搜索或者按n(或N)时,再次显示高亮
/pattern/+number: 光标停在pattern行后面第number行上
/pattern/-number: 光标停在pattern行前面第number行上


11、窗口命令

在 vim中输入如下命令:

多窗口中的文件命令
命令 含义
: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 关闭所有窗口并退出




参考博客1:http://blog.csdn.net/scaleqiao/article/details/45153379

参考博客2:http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html

-------------本文结束感谢您的阅读-------------