# vim常用命令,linux必备
# 前言
掌握vim是linux必备技能,当掌握了vim的操作,很多时候比文本编辑器或IDE更高效。

# 移动与跳转
| 命令 | 说明 | 
|---|---|
set nu |  显示行号; | 
set nonu |  取消显示行号; | 
0 |  数字0,移动到行首; | 
$ |  移动到行尾; | 
gg |  移动到文档的第一行;与1G一样; | 
G |  移动到文档的最后一行; | 
nG |  n为数字,移动到第n行; | 
n<回车> |  向下移动n行; | 
Ctrl + f |  向下翻页,即Page Down; | 
Ctrl + b |  向上翻页,即Page Up; | 
Ctrl + d |  向下翻半页; | 
Ctrl + u |  向上翻半页; | 
h |  向左; | 
j |  向下;nj表示向下移动n行; | 
k |  向上; | 
l |  向右; | 
H |  移动到屏幕第一行; | 
M |  移动到屏幕中间一行; | 
L |  移动到屏幕最后一行; | 
+ |  非空格符的下一行; | 
- |  非空格符的上一行; | 
# 删除与复制
| 命令 | 说明 | 
|---|---|
dd |  删除当前行; | 
ndd |  向下删除n行; | 
dG |  删除光标后所有;D效果一样; | 
d1G |  删除光标前所有; | 
d$ |  删除当前行光标后所有; | 
d0 |  删除当前行光标前所有; | 
yy |  复制当前行; | 
nyy |  往下复制n行; | 
yG |  复制光标后所有; | 
y1G |  复制光标前所有; | 
y$ |  复制当前行光标后所有; | 
y0 |  复制当前行光标前所有; | 
p、P |  p下一行粘贴,P上一行粘贴; | 
u |  复原上一次操作; | 
Ctrl + r |  重复上一次操作; | 
# 搜索和替换
| 命令 | 说明 | 
|---|---|
/word |  向下寻找字符串; | 
?word |  向上寻找字符串; | 
n |  重复上一个搜索动作;之前向下,现在也向下; | 
N |  反向重复上一个搜索动作; | 
:wq |  保存后退出;:wq!,强制保存后退出; | 
:n1,n2s/word1/word2/g |  在n1与n2行之间,用word2替换word1;如50,110s/pkslow/PKSLOW/g; | 
:1,$s/word1/word2/g |  第一行到最后一行,即全文搜索替换; | 
如果替换的字符串有/,要用转义::1,$s/\/opt\/pkslow/\opt\/PKSLOW/g。
# 文件操作
| 命令 | 说明 | 
|---|---|
:w |  保存 | 
:w! |  强制保存; | 
:q |  退出不保存; | 
:q! |  强制退出不保存; | 
:wq |  保存后退出;:wq!,强制保存后退出; | 
:w filename |  另存为 | 
:n1,n2 w filename |  将n1到n2另存为; | 
:r filename |  读另一个文件内容; | 
! command |  暂时离开vi执行命令; | 
# 其它命令
| 命令 | 说明 | 
|---|---|
syntax on |  打开语法高亮; | 
set mouse=a |  支持使用鼠标; | 
set encoding=utf-8 |  设置编码; | 
set autoindent |  回车下一行自动保持上一行缩进; | 
set relativenumber |  显示光标所在的相对行号; | 
set showmatch |  遇到括号,自动高亮另一个相对的括号; | 
set hlsearch |  高亮显示搜索匹配结果; | 
set ignorecase |  搜索时忽略大小写; | 
set history=1000 |  记录历史命令数; | 
参考文档:
← Linux Linux常用命令整理 →