VIM 经常使用技巧 命令

VIM  经常使用技巧 命令html

参考:http://www.cnblogs.com/tzhangofseu/archive/2011/12/17/2290955.html
linux

文本信息配置正则表达式

set nu(写入配置文件.vimrc中) 显示行号。
ctrl-g(正常模式下使用命令) 显示文件信息和当前行。
statusline.vim(插件) 增长底部状态栏。
shell


代码缩进配置vim

filetype on(写入配置文件.vimrc中) 使vim对文件类型敏感。
autocmd FileType c,cpp,h :setlocal cindent cinoptions=:0,g0,t0(写入配置文件.vimrc中) 设置c缩进风格,具体详情参见:h cinoptions-values。
autocmd FileType c,cpp,h :setlocal et sta sw=4 sts=4 tabstop=4(写入配置文件.vimrc中) 设置一次缩进的距离是4个空格。
=(正常模式或者可视模式下使用命令) 按照缩进风格排版代码。
<(可视模式下使用命令) 向左缩进一级。
>(可视模式下使用命令) 向右缩进一级。
缓存


语法高亮编辑器

filetype plugin on(写入配置文件.vimrc中) 一般安装的vim中已经加入了各类语言的语法高亮插件,咱们只须要打开文件类型相关的插件就能够了。spa


快速定位.net

gd(正常模式下使用命令) 跳转到局部变量定义处。
gD(正常模式下使用命令) 跳转到全局标量定义处。
*(正常模式下使用命令) 搜索并跳到下一个光标所在的单词。
g*(正常模式下使用命令) 功能接近*,可是查找的目标不带\<和\>单词分界符号。
#(正常模式下使用命令) 搜索并跳到上一个光标所在的单词。
g#(正常模式下使用命令) 功能接近#,可是查找的目标不带\<和\>单词分界符号。
插件


标记位置

m{a-zA-Z0-9} (正常模式下使用命令) 在当前位置制做一个标记,标记名字能够使用a-z或者A-Z之间的任意字符,例如输入ma,就是将当前位置标记为a标记。注意a-z为单文件标记,不可跨文件使用,而A-Z0-9为全局标记,能够跨文件使用。

‘{a-zA-Z0-9} (正常模式下使用命令) 跳转到本文件的标记上。

:marks [{a-zA-z0-9}] (正常模式下使用命令) 查看指定标记的内容,不写标记号则查看全部。
:delm {a-zA-z0-9} (正常模式下使用命令) 删除一个标记。


全文搜索

:vimgrep(正常模式下使用命令) 全文搜索,功能同grep命令,可是支持在vim进行多文件跳转定位。
使用方法:vimgrep 正则表达式 文件。文件支持通配符,例如*.c表明全部的.c文件。若是但愿递归搜索,能够使用**/*,表示搜索全部的文件。
:cl 列举结果
:cc(正常模式下使用命令) 当前结果
:cn(正常模式下使用命令) 下一个结果
:cp(正常模式下使用命令) 上一个结果
:cw(正常模式下使用命令) 从新打开搜索结果窗口


多文件编辑

vim f1 f2 …… fn(在shell下使用命令) 打开多个文件。
:e 文件名(正常模式下使用命令) 在vim中打开新文件。
:ls(正常模式下使用命令) 全部打开文件列表。
:bn(正常模式下使用命令) 到下一个文件。
:bp(正常模式下使用命令) 到上一个文件。
:b# 或 ctrl-6(正常模式下使用命令) 到最近的前一个文件。
set  autowriteall(写入配置文件.vimrc中) 若是讨厌每次打开新文件,vim喋喋不休的要求你保存,那么能够设置自动保存。


多窗口编辑
:sp  文件名(正常模式下使用命令) 横向拆分窗口(多行窗口)。
:vsp 文件名(正常模式下使用命令) 纵向拆分窗口(多列窗口)。
ctrl-w h(正常模式下使用命令) 将光标移动到左一个窗口。
ctrl-w j(正常模式下使用命令) 将光标移动到下一个窗口。
ctrl-w k(正常模式下使用命令) 将光标移动到上一个窗口。
ctrl-w l(正常模式下使用命令) 将光标移动到右一个窗口。
ctrl-w +(正常模式下使用命令) 当前窗口尺寸变大。
ctrl-w -(正常模式下使用命令) 当前窗口尺寸变小。
ctrl-w o(正常模式下使用命令) 只显示当前窗口。


补全

ctrl-p(插入模式下使用命令) 跳出补全菜单。
ctrl-n(在跳出补全菜单后) 下一个结果。
ctrl-p(在跳出补全菜单后) 上一个结果。
ctrl-y(在跳出补全菜单后) 选择当前结果。
ctrl-x ctrl-f(插入模式下使用命令) 文件名补全。
ctrl-x ctrl-i(插入模式下使用命令) 包含的头文件。
ctrl-x ctrl-](插入模式下使用命令) ctags(将在下文中介绍)符号补全。
ctrl-x ctrl-o(插入模式下使用命令) omni补全,须要设置omnifunc变量。


vim其余命令 (参考vi(vim)教程)

打开文件、保存、关闭文件:

vi filename       //打开filename文件
:w              //保存文件
:w vpser.net  //保存至vpser.net文件
:q             //退出编辑器,若是文件已修改请使用下面的命令
:q!           //退出编辑器,且不保存
:wq              //退出编辑器,且保存文件

插入文本或行:

a      //在当前光标位置的右边添加文本
i       //在当前光标位置的左边添加文本
A     //在当前行的末尾位置添加文本
I      //在当前行的开始处添加文本(非空字符的行首)
O     //在当前行的上面新建一行
o     //在当前行的下面新建一行
R    //替换(覆盖)当前光标位置及后面的若干文本
J    //合并光标所在行及下一行为一行(依然在命令模式)

移动光标:

使用上下左右方向键

命令模式下:h   向左、j   向下 、k   向上、l  向右。
空格键 向右、Backspace  向左、Enter  移动到下一行首、-  移动到上一行首。

删除:

x         //删除当前字符
nx        //删除从光标开始的n个字符
dd      //删除当前行
ndd   //向下删除当前行在内的n行
u       //撤销上一步操做
U      //撤销对当前行的全部操做

搜索:

/vpser     //向光标下搜索vpser字符串
?vpser    //向光标上搜索vpser字符串
n           //向下搜索前一个搜素动做
N           //向上搜索前一个搜索动做

跳转:

n+        //向下跳n行
n-         //向上跳n行
nG        //跳到行号为n的行
G           //跳至文件的底部

设置行号:

:set  nu     //显示行号
:set nonu    //取消显示行号

复制:

yy    //将当前行复制到缓存区,也能够用 "ayy 复制,"a 为缓冲区,a也能够替换为a到z的任意字母,能够完成多个复制任务。
nyy   //将当前行向下n行复制到缓冲区,也能够用 "anyy 复制,"a 为缓冲区,a也能够替换为a到z的任意字母,能够完成多个复制任务。
yw    //复制从光标开始到词尾的字符。
nyw   //复制从光标开始的n个单词。
y^      //复制从光标到行首的内容。 

y$      //复制从光标到行尾的内容。
p        //粘贴剪切板里的内容在光标后,若是使用了前面的自定义缓冲区,建议使用"ap 进行粘贴。
P        //粘贴剪切板里的内容在光标前,若是使用了前面的自定义缓冲区,建议使用"aP 进行粘贴。

替换:

:s/old/new      //用new替换行中首次出现的old
:s/old/new/g         //用new替换行中全部的old
:n,m s/old/new/g     //用new替换从n到m行里全部的old
:%s/old/new/g      //用new替换当前文件里全部的old

编辑其余资源:

:e otherfilename    //编辑文件名为otherfilename的文件。

修改文件格式:

:set fileformat=unix   //将文件修改成unix格式,如win下面的文本文件在linux下会出现^M。