vim常用命令汇总

neonlight@live.cn发表,转载请注明出处。

一、进入编辑器
行:edit,e,ex
屏幕:vi,v,view
vi -r filename(继续意外中断的文件编辑)
vi file1 file2 file3(编辑完前一个文件,用:w保存后,用:n开始下一个文件编辑)
vi -x filename(对encrypt加密文件编辑)
vi 中执行Unix命令([[加数字代表独到第几行]加r代表把结果读进vi中]!ls)
vi 命令行编辑功能($set -o vi)

二、行编辑器命令
edit(或e,ex)命令
屏编转换:v(转屏编),vi(转屏编),:(转行便)
:wq(存盘退出),:q(退出),:q!(强行退出),:w(保存),:w file(另存为)
:n(移动到n行),:np(显示并移动到n行),:m,np(显示m行到n行内容,移动到n行),
:d(显示当前行),:nd(删除第n行内容,移动到n下一行),:m,nd(删除第m到第n行,移动到n行),
:a(在当前行的下移行开始输入文本,直到ESC),1,$(第一行到最后行),:.,$(当前行到最后行)

举例:
:s/stirng1/string2/(把第一个字符替换为第二个字符)
:m,ns/string1/string2/g(g代表所有,mn替换范围限制在m行到n行中)
:%s/string1/string2/g(%代表全文替换)

三、vi基础控制命令
:wq(存盘退出),:q(退出),:q!(强行退出),:w(保存),:w file(另存为)
:r filename(把文件加到当前行后)
光标移动:上下左右方向键,或hjkl,^(行首),$(行尾),
+(下移一行),-(上移一行),空格(左移),退格(右移)
进入编辑态:(光标前),I(行首),a(光标后),A(行尾),o(下面加行),O(上面加行),ESC(返回命令模式)

四、vi基础编辑命令
删除文本:x(字符),dw(单词),D(当前位置到行尾),dd(当前行)
替换文本:r(单个字符),cw(单词)
搜索文本:/(当前向尾),?(当前向头),n(找下一个),N(找前一个)
其它命令:u(撤销),.(重复),J(连接下移行),P(粘贴删除内容)

命令举例:2dd/p(删除两行粘贴),2yy/p(复制两行粘贴)

五、vi设置命令
加行序号:set number,set nonumber

六、vi集合命令
在一段文字前,垂直插入字符串

ctrl+v  //垂直作块选中段落首列
shirt+i //在文本前插入
输入字符串
Esc      //命令结束
}

七、vi编程技巧
跟踪头文件:gf
查看函数定义:[+I
跳转到函数定义:[+tab
ctags命令
定义跟踪:ctrl+[
ctrl+o:跟踪返回

可用ctrl+z将vi转入后台,fg可返回vi
make调试窗口:
在执行过:make后,执行cw,窗口出现
关闭调试窗口cclose或ctrl+w  c

.重复上次的命令

八、vim折叠命令
前言准备:
(1)首先保证自己安装的是完整版vim,ubuntu 8.04自带的不是完整版。
(2)懒得看长文章,列举最实用的折叠语句。
(3)在foldmethod=manual 状态下执行,你可以用:set foldmethod=manual命令切换到这个状态。
(4)neonlight@live.cn发表,转载请注明出处。

建立折叠:
(1)zf:用v做块选定要折叠的语句,折叠用zf(z很像折叠的形状,f是fold缩写)。
(2)zf[x]j:向下折叠x行,例如zf9j。
(3)可以用一般的定位的方法来告诉VIM你要折叠那些地方:也可以用marker, 还可以用行号:20,50, 就可以把20行到五十行折叠起来 。
(4)方便的折起函数:移动到一个花括号{上(或者函数体内也行), 用zfa}, 就可以将下面的匹配的花括号之间的内容折起来。 其他的折叠方法还有zf/string, 可以折叠到下一个匹配的string。

使用折叠:
(1)移动的时候在前面加一个z就可以在折叠的地方移动, 比如zj,就会跳到下一个折叠, zk就是上一个。
(2)要打开的话可以zo,o是open的意思, zO打开所有的折叠。
(3)关上用zc, c是close。 在zO之后用zc会关上所有打开的折叠。
(4)折叠可以嵌套, zr可以打开第一层的折叠,zR可以打开所有层的折叠, 与之对应的是zm和zM, 是按层关上折叠。 比如说按zm, 会从最里层的层叠关起, 连续zm就会一直关到最上层的折叠。

查找到了折叠里面会将折叠打开, 处理完了之后要自己将折叠关上。

折叠选项:
可以让VIM根据语法, 缩进,标记自动折叠。 用set foldmethod=foldoption 来设定。 可以查看一下foldmethod 。

保留折叠:
(1)要下一次打开的时候还保留折叠可以在离开的时候:mkview,再进来的时候:loadview就可以了。
(2)当然也可以将这两句加到vimrc里面让其自动完成。
au BufWinLeave * mkview
au BufWinEnter * silent loadview
这样每次就可以看到上次的折叠了。

其它技巧:
:set foldmethod=manual后,zc按缩进关闭所有折叠

九、vim标签命令

:tabnew 打开新标签

gt 标签间转换

十、vim选块命令

选定块后

shift+<向左移,shift+>向右移

原文地址:https://www.cnblogs.com/wycg1984/p/1735939.html