光标移动
h,j,k,l :左下右上移动
w,W,e,E:以词为单位往后跳,w表示跳到词的头部,e表示跳到词的尾部,小写包含标点
b,B :以单词为单位往前跳动,小写包含标点
^,0,$ :一行的开始/开始/结尾
Ctrl+f/b:上下翻页
gg,G :文档的开头/结尾
[N]gg/G :跳转到第N行
% :匹配括号移动
*/# :匹配光标所在单词,移动到下一个/上一个
进入插入模式
i,a :插入到光标的前/后面
I,A :插入到行头/行尾
o,O :在光标后/前新建一行
s :删除光标所在的一个字符
S :清空光标所在的一行(区别于dd删除一行)
Esc :退出插入模式
关闭/打开
:w :保存
:q :关闭
:wq,:x:保存并关闭
:q! :强制关闭
:e+路径:重新打开一个文件
搜索关键词
/pattern :往后搜索
?pattern :往前搜索
/\cpattern或/pattern\c:忽略大小写搜索
n,N :后一个/前一个搜索结果
查找替换
:s (即substitute)用于查找和替换字符串。语法如下:
:{作用范围}s/{待替换}/{替换后}/{替换标志}
- 作用范围:
s:当前行
%s:全文
‘<,’>:选区。在Visual模式下选择区域后输入:
会自动补全出来
m,n:m-n行
.,+2:当前行和接下来两行 - 替换标志
g:即global
[空]:只替换从光标位置开始,到目标的第一次出现
c:每一次替换都要确认,按下y表示替换,n表示不替换,a表示替换所有,q表示退出替换模式,l表示替换当前位置并退出。^E和^y是光标移动快捷键。
一个常用的例子 :
:%s/abc/def/gc
在全局范围内替换abc为def,每次替换都要经过确认。
编辑剪切复制粘贴
d :删除选中内容
[N]dd :删除一行或N行
dw :删除一个单词
x,X :删除前一个/后一个字符
D :删除该该行光标以及之后的字符
y :复制选中内容
[N]yy:复制一行或N行
yw :复制一个单词
p :粘贴
J :合并下一行到上一行
r+[任意字符]:替换光标所在字符
,>> :将当前行右移一个单位
<< :将当前行左移一个单位(一个tab符)
,> :块右移
< :块左移
~ :切换块中内容的大小写
代码格式化
== :自动缩进当前行指令
8= :格式化当前光标接下来的8行
v+=:格式化选定的行 v 选中需要格式化的代码段
多标签打开文件
:tabe [文件路径]:新标签打开文件
gt/gT :切换下一个/上一个标签页
:tabr :切换到第一个标签页
:tabl :切换到最后一个标签页
窗口操作
:split :水平方向分割出一个窗口
:vsplit :垂直方向分割出一个窗口
:close :关闭窗口
:Ctrl+w+h/j/k/l:按方向切换到其他窗口
:Ctrl+w+w:轮换切换到其他窗口
视觉模式
v:以字符为单位选一块
V:以行为单位选多行
ctrl+v:矩形块选择模式
注:在多行的行头加字符方法:
ctrl+v+I+[任意字符]+Esc+Esc
和系统的剪贴板交互
vim的剪贴板放在独立与系统剪切板的寄存器中,默认不能交互。
- 首先确认vim开启该功能:
vim --version | grep clipboard
,clipboard前应为”+”,否则需要sudo apt-get install vim-gnome - 在~/.vimrc中加入这句:
set clipboard=unnamed
,这样vim使用y复制的数据自动同步到系统剪切板中
其他
. :重复最后一个命令
u :撤销
ctrl+r:恢复
[N][某操作]:重复该操作N 次
ctrl+n/p:插入模式下自动补全功能