Vim基本操作命令大全

jopen 10年前

光标移动定位方式
hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头
       
0 → 数字零,到行首
^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ → 到本行行尾
g_ → 到本行最后一个不是blank字符的位置(还需确定弄清楚_0119)
b → 向前移动一单词的距离,并至单词首
w → 向后移动一单词的距离,并至单词首
 )→ 向前移动一个句子
( → 向后移动一个句子
{ → 向前移动一个段落
} → 向后移动一个段落
gg → 移动到文件第一行第一个单词首
G → 移动到文件最后一行第一个单词首
f [F]c → 跳到本行后一个字符c所在处 [F表示向前]
gd → 跳到单字(标识符、函数等)定义处
N+[Enter] → N为数字,光标向下移动N行
: + N → N为数字,光标移动到指定行
<C-d>→屏幕向下移动半页
<C-u>→屏幕向上移动半页
<C-f> →屏幕向下移动一页
<C-b> →屏幕向上移动一页
H →移动到本屏幕第一行第一个单词首
M →移动到本屏幕中间第一个单词首
L →移动到本屏幕最后一行第一个单词首
z + [Enter] →当前光标所在行变为屏幕首行

z + [ - ] →当前光标所在行变为屏幕尾行


插入方式
i → 在光标前途插入
a → 在光标后插入
I → 在当前行首插入
A → 在当前行尾插入
o → 在当前行后插入一个新行

O → 在当前行前插入一个新行


删除、复制和粘贴
x,X → 在一行字中,x为向后删除一个字符,X为向前删除一个字符
dt c → 删除从光标所在处到字符c
dl → 删除光标所在的字符
yl → 复制光标所在的字符
cl → 改变光标所在的字符
dw → 删除光标所在的单词
yw → 复制光标所在的单词( ye )
cw → 改变光标所在的单词

dd → 删除光标所在的一整行
yy → 复制光标所在的一行
cc → 改变光标所在的一行
ndd → 删除光标所在的向下n行

p,P → p为将已复制的内容在光标的下一行粘贴,P则为粘贴在光标的上一行


可视化选择
v → 字符选择,会将光标经过的地方反白选择
V → 行选择
<C-v> → 块选择


y → 复制反白的地方
d → 删除反白的地方

U → 变大写
u → 变小写

J → 把所有的行连接起来(变成一行)
< 或 > → 左右缩进

= → 自动给缩进 (陈皓注:这个功能相当强大,我太喜欢了)


搜索替换
/pattern → 向下搜索 pattern 的字符串(陈皓注:如果搜索出多个匹配,可按n键到下一个)
?pattern → 向下搜索 pattern 的字符串
n → 向相同方向查找下一个
N → 向相反方向查找下一个
:n1,n2s/pattern1/pattern2/g → 在第n1行和n2行之间寻找pattern1这个字符串,并且将其替换为pattern2.
:1,$s/pattern1/pattern2/g → 从第一行到最后一行寻找pattern1这个字符串,并且将其替换为pattern2.
:1,$s/pattern1/pattern2/gc → 从第一行到最后一行寻找pattern1这个字符串,并且将其替换为pattern2.且在替换前显示提示字符给用户确认是否需要替换

r,R → 进入替换模式。r只替换光标所在那个字符一次。R会一直替换光标所在字符,直到按下Esc键


多文件编辑
:bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件(或用:n和:N)
:rew 回到第一个文件
n# → 跳到前一个文件,实现两个文件之间相互切换
:ls → 列出当前编辑的文件
:bd → 关闭当前文件
:bd! → 强制关闭当前文件
]c → 比较两文件不同时跳到下一个不同处

[c → 比较两文件不同时跳到上一个不同处


打开/保存/退出
:e <path/to/file> → 打开一个文件
:w → 存盘
:saveas <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:qa → 退出所有文件  

:q! → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算文件有更改


其它
Undo/Redo
u → undo 
<C-r> → redo


.→小数点,重复前一个操作
==  → 自动给缩进光标所在行


<C-p>或是<C-n>,自动补齐功能
 

:shell → 暂时进入shell,当输入exit时可回到vi继续编辑

输入 :h! 试试看
再输入 :h 42呢?