常用的VI/VIM命令
删除单个字符: x
删除整行: dd
合并成一行:J
撤消: u
重做:crtr + r
插入: i , a(光标后),o(下方开始新行) ,O(上方开始新行)
移动:
w:向前移动一个单词开始
b:向后移动一个单词开始
e:向前移动到一个单词的末尾
ge:向后移动到一个单词的末尾
W,B,E,gE是以空格(' ')区分单词,小写的话是以非字母区分
$:移到行尾
^:移动一行第一个非空格光标
0:移动一行第一字光标处
f<c>:在当前行向前查找为c的字符
F<c>:在当前行向后查找为c的字符
[fF]<c>这两个命令执行后,按 ; 和 , 可以重复执行命令
%:定位到对称的符号光标处,如[ ],{ }
<n>G:光标定位在指定的行
gg:定位到第一行
G:定位到最后一行
H:移动到当前可见视图的第一行
M:移动到当前可见视图的中间行
L:移动到当前可见视图的最后一行
CRTL + G : 显示当前位置
:set number 显示行号
:set nonumber 关闭显示行号
CRTL + E : 向下滚动一行
CRTL + Y : 向上滚动一行
CRTL + U : 向上滚动半屏
CRTL + D : 向下滚动半屏
CRTL + B : 向上滚动一屏
CRTL + F : 向下滚动一屏
zz:把当前光标所在的行移动屏中间行
zt: 把当前光标所在的行移动屏上端
zb:把当前光标所在的行移动屏下端
m[az]:把当前光标所在的位置设置一个标记,用a~z之间的一个字符表示,如果在别的地方要马上回到此标记的位置,按 '<m>,如:'s,则回到标记为s的地方 '' 跳回到上次光标位置
使用标记可以快速移动。到达标记后,可以用Ctrl+o返回原来的位置。 Ctrl+o和Ctrl+i 很像浏览器上的 后退 和 前进 。
- m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。
- m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
- `{a-z}: 移动到标记位置。
- '{a-z}: 移动到标记行的行首。
- `{0-9}:回到上[2-10]次关闭vim时最后离开的位置。
- ``: 移动到上次编辑的位置。''也可以,不过``精确到列,而''精确到行 。如果想跳转到更老的位置,可以按C-o,跳转到更新的位置用C-i。
- `": 移动到上次离开的地方。
- `.: 移动到最后改动的地方。
- :marks 显示所有标记。
- :delmarks a b -- 删除标记a和b。
- :delmarks a-c -- 删除标记a、b和c。
- :delmarks a c-f -- 删除标记a、c、d、e、f。
- :delmarks! -- 删除当前缓冲区的所有标记。
- :help mark-motions 查看更多关于mark的知识。
查找
/<find_sequence> : 查找<find_sequence>字符串,注意.*[]^%/\?~$是特殊字符,要用\转义
按enter执行命令后,可以输入n或N进行正向,或者反向查询下一个
如果执行查找时一个单词太长不容易拼写,则可以在光标定位到该单词时执行: * 命令,则可以执行查找,# 命令是反向查找
:set ignorecase可以设置查询是否对大小写敏感
:set hlsearch 高亮显示所有匹配的行
:set incsearch 在输入的时候就显示匹配点
:set wrapscan 找n或N查找的时候到达末尾时,是徇环查找
编辑文本
d + <移动命令>:操作从当前光标所处的位置到移动后的光标位置的所有内容,例于:de,删除当前光标到下一个单词结尾的所有内容
c + <移动命令>:和上面一样,不过会进入插入模式
一些快捷键:
x = dl : 删除当前光标内容
X = dh : 删除光标左边的字符
D = d$ : 删除到行尾
C = c$ : 删除到行尾并进入插入模式
s = cl : 修改一个字符
S = cc : 修改整行
r[az]:替换光标定位位置的字符,如rb则把当前光标位置的字符换成b,这比 c 命令的好处在于不用进入插入模式,省下ESC操作
. : 重复执行上次的操作
v,V,crtl + v,可分别进入可视模式,行可视模式,块可视模式,选择后按d可以删除选择的内容。在可视模式下,如果想换可变换的光标点,则可以按o和O来进行切换
y + <移动命令>:复制
daw:删除一个单词
yaw:拷贝一个单词
yiw:拷贝一个单词,与前的区别是这个拷贝不包括单词后面的空格字符串
~:改变单词大小写
A:移动在行尾并启动插入模式
I:移动到行首第一个非空字符并启动插入模式
R:进入替换模式
NERDTree
crtl + ww : 返回到NERDTree操作界面
:! touch 新增文件