vim有三种模式:输入模式,命令模式,底行模式,使用esc进入命令模式,在命令模式下按英文的冒号,进入底行模式;命令行模式下按i进入输入模式。vim编辑文件是将文件内容复制到缓冲区显示在屏幕上。
vim的启动
输入vim命令后,便进入全屏幕编辑环境,此时的状态为命令模式。
vim 进入vim的一个临时缓冲区,光标定位在该缓冲区第1行第1列的位置上
vim file1 如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在该缓冲区第1行第1列的位置上
vim + file1 (有+号)光标定位在文件最后1行第1列的位置上。如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区
vim +N file1(N:为数字) 光标定位在文件第N行第1列的位置上。如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区
vim +/string file1 如果file1文件不存在将建立此文件;如该文件存在则将其拷贝到一个临时缓冲区。光标定位在文件中第一次出现字符串string的行首位置
vim file1 file2.. 依次编辑文件
vim -r file 上次使用vim时系统崩溃,则恢复文件
vim -R file 以只读方式打开文件,但可以强制保存
vim -M file 以只读的方式打开文件,不可以强制保存
vimdiff file1 file2 比较编辑两个不同的文件
vim -x file 编辑的文件加密,会提示输入密码
vim -c cmd file 在打开文件前,先执行指定的命令
vim dir/ 使用 netrw 打开目录选择文件编辑
vim -b file.bin 告诉 vim 编辑的是二进制文件,区别是不自动在文件尾加换行符(0x0a)
vim a.tar.gz
vim a.zip
vim 进入vim的一个临时缓冲区,光标定位在该缓冲区第1行第1列的位置上
vim file1 如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在该缓冲区第1行第1列的位置上
vim + file1 (有+号)光标定位在文件最后1行第1列的位置上。如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区
vim +N file1(N:为数字) 光标定位在文件第N行第1列的位置上。如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区
vim +/string file1 如果file1文件不存在将建立此文件;如该文件存在则将其拷贝到一个临时缓冲区。光标定位在文件中第一次出现字符串string的行首位置
vim file1 file2.. 依次编辑文件
vim -r file 上次使用vim时系统崩溃,则恢复文件
vim -R file 以只读方式打开文件,但可以强制保存
vim -M file 以只读的方式打开文件,不可以强制保存
vimdiff file1 file2 比较编辑两个不同的文件
vim -x file 编辑的文件加密,会提示输入密码
vim -c cmd file 在打开文件前,先执行指定的命令
vim dir/ 使用 netrw 打开目录选择文件编辑
vim -b file.bin 告诉 vim 编辑的是二进制文件,区别是不自动在文件尾加换行符(0x0a)
vim a.tar.gz
vim a.zip
退出vim(底行模式(last line mode))
建议在退出vim前,先按ESC键,以确保当前vim的状态为命令方式,然后再键入“:”(冒号),输入下列命令,退出vim
:x 保存后退出
ZZ 保存后退出
ZQ 强制退出,不保存
:saveas path_file 另存为 path_file
:w 将缓冲区内容写入文件,即将编辑的内容写入原文件中
:w filename 存入指定文件
:q 将编辑缓冲区的内容写入文件,则新的内容就替代了原始文件。这时并没有退出vim,必须进一步输入下述命令才能退出vim
:q! 强制退出;使被更新的内容不写回文件中。仅键入命令:q时,如vim发现文本内容已被更改,将提示用户使用“ :q ”命令退出
:wq 先执行w,后执行q
:qa 多屏时全部退出
:x 保存后退出
ZZ 保存后退出
ZQ 强制退出,不保存
:saveas path_file 另存为 path_file
:w 将缓冲区内容写入文件,即将编辑的内容写入原文件中
:w filename 存入指定文件
:q 将编辑缓冲区的内容写入文件,则新的内容就替代了原始文件。这时并没有退出vim,必须进一步输入下述命令才能退出vim
:q! 强制退出;使被更新的内容不写回文件中。仅键入命令:q时,如vim发现文本内容已被更改,将提示用户使用“ :q ”命令退出
:wq 先执行w,后执行q
:qa 多屏时全部退出
vimrc配置设置
在启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置和脚本,其注释是使用英文的双引号。所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便,这个文件有些linux发行版中没有,需要自己创建,创建的命令为 $vim ~/.vimrc ;or /etc/vimrc ;设置完后,进入底行模式,输入“ :x ”保存退出。所有的这些设置都可以在编辑时在底行模式中改变。查询系统是否安装了 vim-enhanced 包,没有安装软件这些配置将不起作用, $rpm –qa vim-enhanced。
我的配置
set nocompatible
set nu
set completeopt=longest,menu
set nobackup
set fileformat=unix
set history=1000
set background=dark
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls
set incsearch
set showcmd
set statusline+=%f "在状态栏显示文件名
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=utf-8
set fileencoding=utf-8
colorscheme desert
syntax on
"set cindent
"set encoding=prc
"set mouse=a
"set mouse=v
"set selection=exclusive
"set selectmode=mouse,key
helptags ~/.vim/doc
filetype plugin indent on
"自动补全括号
"iab ( ()
"iab { {}
:vmap <F5> :s#^#//#<CR> "注释一行
:vmap <F6> :s#^//##<CR> "取消注释
:map <F7> :set nu<CR> "添加行号
:map <F8> :set nonu<CR>
:map <F9> :set paste<CR> "粘贴模式
:map <F10> :set nopaste<CR>
nnoremap <leader>1 :set filetype=xhtml<CR> "解决 html css 中缩进问题
nnoremap <leader>2 :set filetype=css<CR>
nnoremap <leader>3 :set filetype=javascript<CR>
nnoremap <leader>4 :set filetype=php<CR>
let g:html_indent_inctags = "body,head,tbody" " 缩进body head
let g:html_indent_script1 = "inc" "缩进<script>标签
let g:html_indent_style1 = "inc" "缩进<style>标签
au FileType html setlocal autoindent indentexpr= "取消vim对html标记自动产生的缩进,但打开自动缩进选项
:command! -nargs=1 Rename let tpname = expand('%:t') | saveas <args> | edit <args> | call delete(expand(tpname)) "重命名文件 Rename filename(自定义命令首字母要大写)
我的配置
set nocompatible
set nu
set completeopt=longest,menu
set nobackup
set fileformat=unix
set history=1000
set background=dark
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set guioptions-=T
set vb t_vb=
set ruler
set nohls
set incsearch
set showcmd
set statusline+=%f "在状态栏显示文件名
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=utf-8
set fileencoding=utf-8
colorscheme desert
syntax on
"set cindent
"set encoding=prc
"set mouse=a
"set mouse=v
"set selection=exclusive
"set selectmode=mouse,key
helptags ~/.vim/doc
filetype plugin indent on
"自动补全括号
"iab ( ()
"iab { {}
:vmap <F5> :s#^#//#<CR> "注释一行
:vmap <F6> :s#^//##<CR> "取消注释
:map <F7> :set nu<CR> "添加行号
:map <F8> :set nonu<CR>
:map <F9> :set paste<CR> "粘贴模式
:map <F10> :set nopaste<CR>
nnoremap <leader>1 :set filetype=xhtml<CR> "解决 html css 中缩进问题
nnoremap <leader>2 :set filetype=css<CR>
nnoremap <leader>3 :set filetype=javascript<CR>
nnoremap <leader>4 :set filetype=php<CR>
let g:html_indent_inctags = "body,head,tbody" " 缩进body head
let g:html_indent_script1 = "inc" "缩进<script>标签
let g:html_indent_style1 = "inc" "缩进<style>标签
au FileType html setlocal autoindent indentexpr= "取消vim对html标记自动产生的缩进,但打开自动缩进选项
:command! -nargs=1 Rename let tpname = expand('%:t') | saveas <args> | edit <args> | call delete(expand(tpname)) "重命名文件 Rename filename(自定义命令首字母要大写)
正则表达式
$ 匹配行尾 ^ 匹配行首 < 匹配单词词首 > 匹配单词词尾 | 或操作符 & 与操作符 . 匹配任意一个字符 * 匹配0-任意个 + 匹配1-任意个 ? 匹配0-1个 {n,m} 匹配n-m个 {-n,m} 与{n,m}一样,尽可能少次数地重复 {n} 匹配n个 {n,} 匹配n-任意个 {,m} 匹配0-m个 \_. 匹配包含换行在内的所有字符 {-} 表示前一个字符可出现零次或多次,但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好 = 匹配一个可有可无的项 \_s 匹配空格或断行 \_[] * 匹配 * 字符 . 匹配 . 字符 / 匹配 / 字符 \ 匹配 字符 [ 匹配 [ 字符 [abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围,如[a-z0-9]匹配小写字母和阿拉伯数字 [^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符 d 匹配阿拉伯数字,等同于[0-9] D 匹配阿拉伯数字之外的任意字符,等同于[^0-9] x 匹配十六进制数字,等同于[0-9A-Fa-f] X 匹配十六进制数字,等同于[^0-9A-Fa-f] w 匹配单词字母,等同于[0-9A-Za-z_] W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_] * 匹配 <TAB> 字符 s 匹配空白字符,等同于[ ] S 匹配非空白字符,等同于[^ ] a 所有的字母字符. 等同于[a-zA-Z] l 小写字母 [a-z] L 非小写字母 [^a-z] u 大写字母 [A-Z] U 非大写字母 [^A-Z] 替换变量:在正规表达式中使用 ( 和 ) 符号括起正规表达式,即可在后面使用1、2等变量来访问 ( 和 ) 中的内容。 函数式 :s/替换字符串/=函数式 在函数式中可以使用 submatch(1)、submatch(2) 等来引用 1、2 等的内容,而submatch(0)可以引用匹配的整个内容。 实例: :%s/s+$// 去掉所有的行尾空格 :%s/(s* )+/ / 去掉所有的空白行 :%s#s*//.*## 去掉所有的“//”注释,即去掉所有的// :%s#s*/*\_.{-}*/s*##g 去掉所有的“/* */”注释 :g/^s*$/d 删除只有空白的行 :s/(w+)s+(w+)/2 1 将 data1 data2 修改为 data2 data1 :%s/(w+), (w+)/2 1/ 将 Doe, John 修改为 John Doe :%s/<id>/=line(".") 将各行的 id 字符串替换为行号 :%s/(^<w+>)/=(line(".")-10) .".". submatch(1) 将每行开头的单词替换为(行号-10).单词的格式,如第11行的word替换成1. word :/OB/+1,$!sort 排序 :n,m sort 排序 n,m 行 :%s/<[^>;]*>;//g 去掉html的的标记 转义字符 似乎 vim 中的转义符与其它的工具有些差异 匹配 <CR> 键 匹配行末
编辑模式
编辑模式
ctrl p 自动补全,向上搜索匹配词,在 vim 打开的所有文档中查找,不断输入命令会循环查找
ctrl x f 补全文件名
ctrl x l 自动补齐正行文本,仅在本窗口出现的文档中匹配
命令模式
h 向左移动一个字符 l 向右移动一个字符 j 向下移动一行 k 向上移动一行 w 将光标移到下一个单词的开头 W 移到下一个字的开头,忽略标点符号 b 光标回到上个 word 的第一个字母 fa 移到下一个 a 字符处 nfa Fa t, 移到逗号前的字符 Ta B 移到前一个字的开头,忽略标点符号 BACK e 将光标移到下一个单词的结尾 E 移到下一个字的结尾,忽略标点符号 END J 合并光标所在行及下一行为一行(依然在命令模式) gg 光标回到文件首部 ngg 跳到第n行 GG 光标到文件最后一行首部 gf 打开当前光标所在word的文件,没有这个文件则创建他。注意要先保存所作的更改 0 到本行头 $ 到文行末 n+ 光标下移n行 n- 光标上移n行 H 光标移动到屏幕顶行 M 光标移动到屏幕中间 L 光标移动到屏幕最后一行 zt 把当前行置于屏幕顶端 z. 把当前行至于屏幕中间 zb 把当前行至于屏幕底端 '' 移动光标到上一个标记处 '. 移动光标到上一次的修改行 `. 移动光标到上一次的修改点 50% 光标置于文件中间 ctrl J 跳转到当前光标所在单词对应的主题 ctrl O 回到前一个光标的位置 [[ 光标移到文件开始位置 ]] 光标移到文件结尾 ( 光标移动到句首,以一个空白行分隔判断段落 ) 光标移动到句尾 { 光标移动到段落开头,以一个空白行判断段落 } 光标移动到段落结尾 gd 跳转到局部变量的定义处; gD 跳转到全局变量的定义处,从当前文件开头开始搜索; g; 上一个修改过的地方; g, 下一个修改过的地方; [[ 跳转到上一个函数块开始,需要有单独一行的{。 ]] 跳转到下一个函数块开始,需要有单独一行的{。 [] 跳转到上一个函数块结束,需要有单独一行的}。 ][ 跳转到下一个函数块结束,需要有单独一行的}。 [{ 跳转到当前块开始处; ]} 跳转到当前块结束处; [/ 跳转到当前注释块开始处; ]/ 跳转到当前注释块结束处; % 不仅能移动到匹配的(),{}或[]上,而且能在#if,#else, #endif之间跳跃。 % 括号匹配,移动到匹配的括号上,光标必须在括号上,匹配括号移动,包括 “ (, {, [ ” * 搜索匹配光标当前所在的单词,移动光标到下一个单词 # 搜索匹配光标当前所在的单词,移动光标到上一个单词 nfx 在当前行查找光标后第n个x(一般直接fx) 模式转换 a 在当前光标位置的右边添加文本 A 在当前行的末尾位置添加文本 i 在当前光标位置的左边添加文本 I 在当前行的开始处添加文本(非空字符的行首) o 在当前行的下面新建一行 O 在当前行的上面新建一行 R 替换(覆盖)当前光标位置及后面的若干文本,相当于插入 s 删除当前的字符后进入输入模式 cw 删除当前word并进入输入模式 ncw 删除当前word开始的n个word后进入输入模式 cc 删除当前行后进入输入模式 ncc 删除当前行开始的n行后进入输入模式 复制 删除(剪切) 粘贴 恢复 u 撤销 ctrl r 恢复,只对u有效 U 撤销对光标所在那一行所做的修改 x 删除光标所在的字符 nx 删除从光标开始的n个字符 X 删除光标之前(其左边)的一个字符 r 修改光标所在的字符,按一下,再按想输入的字符 J 合并两行 d 删除可视区域的内容 dd 删除当前行 dfa 删除当前字符直到第一个a字符 dt" 删除所有的内容,直到遇到双引号 ndd 向下删除当前行在内的n行 dw 删除一个词和它后面的空格,将光标放置到该词的开头 ndw 删除光标及光标后的n个word d^ 删除行中光标前面的字符 d$ 删除行中光标及其右边的字符 d0 同d^ D 同d$ dG 删除包含当前行到文件尾的内容 ggdG 删除整个文件 nyl 复制当前n个字符 y2fa 复制当前字符直到第二个a字符 y0 复制当前光标到行首的内容 y$ 复制当前光标到行末的内容 yG 复制当前行到最后一行 yy 当前行复制到缓存区,也可以用 ayy 复制, a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务 yw 复制当前光标处的单词 nyy 将当前行向下n行复制到缓冲区,也可以用 anyy 复制, a 缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务 yw 复制从光标开始到词尾的字符 nyw 复制从光标开始的n个单词 y^ 复制从光标到行首的内容 y$ 复制从光标到行尾的内容 guw 光标下的单词变为小写 gUw 光标下的单词变为大写 ~ 大小写转换 xp 左右交换光标处两字符的位置 p 粘贴到当前光标后面 P 粘贴到当前光标前面 ga 显示光标下的字符在当前使用的encoding下的内码 宏 . 重复上一个编辑动作 qx 记录底行模式下输入的命令,并列表呈现出来 q 停止录制 @x 播放宏a @@ 播放最近的宏 zf 创建折叠的命令(需加方向键),可以在一个可视区域上使用该命令 zd 删除当前行的折叠 zD 删除当前行的折叠 zfap 折叠光标所在的段 zo 打开折叠的文本,空格也可以 zc 收起折叠 za 打开/关闭当前折叠 zr 打开嵌套的折行 zm 收起嵌套的折行 zR(zO) 打开所有折行 zM(zC) 收起所有折行 zj 跳到下一个折叠处 zk 跳到上一个折叠处 zi enable/disable fold = 使用v选定代码后,按'='会自动缩进代码 > 输入此命令则光标所在行向右移动一个tab > 使用v选定代码后,按'>'会将代码整体右移 5>> 输入此命令将光标在内的5行向右移动一个tab v 可视模式,单个字符 V 可视模式,行,可以选择连续的多个行 ctrl v 可视模式,列 ctrl l 刷新屏幕 自动补全 ctrl p 向上搜索匹配词 ctrl n 向下 移动 ctrl e 光标向下卷一行 ctrl y 光标向上卷一行 翻页 ctrl u 光标向下卷半页 ctrl d 光标向上卷半页 ctrl f 光标向下卷一页 ctrl b 光标向上卷一页 ctrl q 挂起时使用 ctrl z 暂时挂到后台 ctrl ] 跳到函数定义的地方 ctrl g 显示文件名,当前光标所在行的行号,总的行数,以及当前行所在文件中的百分比和当前光标所在的列的信息,同':f' ctrl w 窗口切换,连按两下,按方向键 ctrl w s 上下分割当前打开的文件 ctrl w v 左右分割当前打开的文件 ctrl w c 关闭当前窗口 ctrl w q 关闭当前窗口,如果只剩最后一个了,则退出Vim ctrl w h 把光标移到左边的屏 ctrl w H 屏幕向左移动 ctrl w j 把光标移到下边的屏 ctrl w J 屏幕向下移动 ctrl w k 把光标移到上边的屏 ctrl w K 屏幕向上移动 ctrl w l 把光标移到右边的屏 ctrl w L 屏幕向右移动 ctrl w = 让所有的屏都有一样的高度 ctrl W + 要扩大窗口 ctrl W - 要缩小窗口
底行模式
向前操作时不包括当前光标处的字符或word,向后操作时则包含当前
/word 向下搜索word,n和N表示在同一方向重复上次的搜索命令
?word 向上搜索word
底行的正则
^ 表示头(可用'0'代替)
$ 表示尾
跳到某一行
:行号
:e 重新载入,类似刷新,edit
:e! 放弃此次修改,重新载入该文件
:e other_file 编辑filename为other_filename的文件
:e ++enc=utf8 file 让vim用utf-8的编码打开这个文件
:w ++enc=gbk 不管当前文件什么编码,把它转存成gbk编码
:e ++ff=dos filename 让vim用dos格式打开这个文件。
:w ++ff=mac filename 以mac格式存储这个文件。
替换 删除 复制 vim删除时会将删掉的内容复制到剪切板,使用下面语句时建议不使用'/'而使用'#'
:% s/old/new 用new替换每一行中首次出现的old
:% s/old/new/g 用new替换行中所有的old
:% s/old/new/gc 全文替换并让用户确认
:% s/s+$// 去掉所有的行尾空格,'s'表示空白字符,'+'表示匹配一次或多次,'$'表示匹配到行尾
:%s/s∗ +/ / 去掉所有的空白行
:%s!s*//.*!! 去掉所有的“//”注释
:%s!s*/*\_.{-}*/s*!!g 去掉所有的“/* */”注释
:%s+/<love/>+&+g 完全匹配"love"的单词有多少,用自己替换自己计算出出现的次数,用'+'代替'/'
:%s= *$== 将所有行尾多余的空格删除
:g/^s*$/d 将所有不包含字符(空格也不包含)的空行删除
:#,# s/old/new/gc //这条命令作用不确定
:n,m s/old/new/gc 用new替换从n到m行里所有的old,每替换一次进行提醒
:n,m copy 10 拷贝n到m行到第10行下面。co
:n,m d 删除n到m行,包含第n行和第m行
:,24y 复制当前光标所在行到24行
:d 12 删除包含光标所在行在内的12行
:n,m move 10 移动n到m行到10行下面。m
:s/string/^M/ ^M由 ctrl V 和 ctrl M 获得,将字符替换成换行符
:s/string/ /g 将 string 换为换行符
:!cmd 执行终端命令
:r !command 将终端命令输出添加到当前行
:% !command 用终端命令输出替换当前文件内容
:%!xxd 将文件转换为十六进制, -b 选项转换为二进制,不可以多次转换
:%!xxd -r 将十六进制文件转换为文本
:w !sudo tee % 以普通用户身份打开的vim,修改后以root身份保存
:f 显示文件名,当前光标所在行的行号,总的行数,以及当前行所在文件中的百分比和当前光标所在的列的信息
:f file 生成一个内容为当前缓冲区的新的file文件,如果之前打开过文档,则对其不做任何改动。
:X 加密文件
:cat -n filename
:awk ‘{print $1}’ a.txt > b.txt
:bd 移出buffer,会使得当前编辑的文件移出内存,编辑新的为命令的文件,这样做意义不大
:sh 执行shell命令
:exit
:abbr sprt System.out.println 缩写命令,相当于定义宏
:ab
:r filename 复制指定文件的内容当光标所在处
:vim filename -r 恢复文件
:w! newfilename 另存为
: 12,24> 此命令将12行到14行的数据都向右移动一个tab
: 12,24>> 此命令将12行到14行的数据都向右移动两个tab
:args 显示编辑名单中的各个文件名列表
:edit ++enc=gbk 强制使用gbk编码打开文件,当vim打开文件编码错误时可以使用
:map 列出当前已定义的映射
:Sex 水平分割一个窗口,浏览文件系统,用enter键选择文件
:Vex 垂直分割一个窗口,浏览文件系统
:jumps 列出关于你曾经跳转过的位置的列表,你最近一个跳转的位置被特别以一个”>”号标记
:mark a 设置标记a,使用d'a删除光标到标记的内容,y'a将其复制到剪切版
:marks 列出自定义的标记,包含VIM内部自定义的标识
:only 只留下当前编辑的窗口,关闭其他的编辑窗口
:iab ( () 自动补全括号
:%!nl 要对包含空行的所有行进行编号(所有行之前插入行号^I)
:version 显示VIM版本信息,包含特性、编译方式及配置文件目录
:n1,n2 w! command 将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入(注意空格)例如 :1,4 w! grep tom
:options 打开一个新窗口, 在该窗口的最开头的注释下面是一个选项列表
:autocmd! 删除之前的自动命令
:runtime! syntax/2html.vim 转换成 html, 会按照你的颜色配置来转
:g/^/exec "s/^/".strpart(line(".")." ", 0, 4) 在行首插入行号
:filetype on 侦察文件类型
:filetype plugin on 载入文件类型插件
:filetype indent on 为特定文件类型载入相关缩进文件
:set all 显示所有的设置项
:set ai 设置自动缩进
:set ic 忽略大小写
:set ignorecase 搜索中忽略大小写
:set noic
:set selection=exclusive
:set selectmode=mouse,key 可以使用鼠标定位
:set mouse=v 可视模式下启用鼠标
:set mouse=a 完全启用鼠标
:set mouse= 关闭鼠标
:set nocompatible 不兼容 vi ,默认兼容
:set nowrapscan 禁止在搜索到文件两端时重新搜索
:set hlsearch 搜索时高亮显示被找到的文本
:set nohls 取消搜索高亮
:nohl 取消高亮
:set incsearch 即时搜索
:colorscheme desert 颜色设置,vim的配色方案在/usr/share/vim/vim74/colors 中
:set gdefault 行内替换
:set guifont=Courier_new:h14:b:cDEFAULT 设置字体和大小
:set lines=35 columns=118 设置默认窗口大小(图形)
:set vb t_vb= 置空命令错误时的铃声的终端代码
:set wildmenu 增强模式中的命令行自动完成操作
:set tabstop=4 实际的tab即为4个空格, 而不是缺省的8个
:set softtabstop=4 使得按退格键时可以退回缩进的长度,使用 expandtab 时特别有效
:set smarttab 在行和段开始处使用制表符
:set expandtab 在输入tab后,vim用恰当的空格来填充这个tab
:set noexpandtab 不要用空格代替制表符
:set sts=4 设置softtabstop为4
:set shiftwidth=4 设置自动缩进 4 个空格, 当然要设自动缩进先
:set autoindent 第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行
:set smartindent 第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编写上很有用
:set cindent 按照 c 语言的语法缩进
:set backspace=2
:set textwidth=79
:set ambiwidth=double
:set autowrite 设置自动存盘
:set showcmd 在Vim窗口的右下角显示一个完整的命令已经完成的部分
:set key= 取消文件加密
:set ai 设置文件起始位置(以光标当前位置为起始)set noai
:set readonly 设置文件只读
:set wrap 将超出屏幕行分多行显示 :set nowrap 关闭换行
:set cursorline 突出显示当前行
:set nobackup 覆盖文件时不备份
:set noswapfile
:set backupcopy=yes 设置备份时的行为为覆盖
:set tags=tags
:set autochdir 自动切换当前目录为当前文件所在的目录
:set report=0 在使用了底行命令后自动告诉我们文件的哪一http://facebook.com/行被改变过
:filetype plugin indent on 开启插件,文件类型检测,自动缩进
:set noerrorbells 关闭错误信息响铃
:set novisualbell 关闭使用可视响铃代替呼叫
:set matchtime=2 短暂跳转到匹配括号的时间
:set magic 设置魔术
:set hidden 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
:set guioptions-=T 隐藏GUI版本的工具栏
:set guioptions-=m 隐藏菜单栏
:set backspace=indent,eol,start 不设定在插入状态无法用退格键和 Delete 键删除回车符
:set cmdheight=1 设定命令行的行数为 1
:set laststatus=2 显示状态栏 (默认值为 1, 无法显示状态栏)
:set encoding=utf-8 相当于set enc
:set fileencoding=utf-8 相当于set fenc
:set fileencodings=utf-8 相当于set fencs
:set termencoding=utf-8
:set nobomb 去除utf-8的bom
:set bomb
:set bomb? 查看文件是否右bom标记
:set foldenable 开始折叠
:set foldmethod=syntax 设置语法折叠
:set foldcolumn=0 设置折叠区域的宽度
:setlocal foldlevel=1 设置折叠层数为1
:set foldclose=all 设置为自动关闭折叠
:set ff 显示当前文件的格式
:set ruler 光标位置打状态行
set ambiwidth=double 防止特殊符号无法正常显示
:set fileformats=unix,dos,mac 添加在配置文件中让vim自动识别文件格式
:set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc 这样在vim中打开文件时, 按 tab 键补齐文件名时它会忽略上述文件
:set statusline= %<%F[%1*%M%*%n%R%H]%= %y %0(%{&fileformat} %{&encoding} %c:%l/%L%) 设置在状态行显示的信息
:syntax on/off 色彩支持
Python 文件的一般设置,比如不要 tab 等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map <F12> :!python %<CR>
设置字典 ~/.vim/dict/文件的路径
autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
autocmd filetype php set dictionary=$VIMFILES/dict/php.dict
let b:javascript_fold=1 打开javascript折叠
let javascript_enable_domhtmlcss=1 打开javascript对dom、html和css的支持
let helptags=$VIMFILES.'/doc' 设定doc文档目录
/word 向下搜索word,n和N表示在同一方向重复上次的搜索命令
?word 向上搜索word
底行的正则
^ 表示头(可用'0'代替)
$ 表示尾
跳到某一行
:行号
:e 重新载入,类似刷新,edit
:e! 放弃此次修改,重新载入该文件
:e other_file 编辑filename为other_filename的文件
:e ++enc=utf8 file 让vim用utf-8的编码打开这个文件
:w ++enc=gbk 不管当前文件什么编码,把它转存成gbk编码
:e ++ff=dos filename 让vim用dos格式打开这个文件。
:w ++ff=mac filename 以mac格式存储这个文件。
替换 删除 复制 vim删除时会将删掉的内容复制到剪切板,使用下面语句时建议不使用'/'而使用'#'
:% s/old/new 用new替换每一行中首次出现的old
:% s/old/new/g 用new替换行中所有的old
:% s/old/new/gc 全文替换并让用户确认
:% s/s+$// 去掉所有的行尾空格,'s'表示空白字符,'+'表示匹配一次或多次,'$'表示匹配到行尾
:%s/s∗ +/ / 去掉所有的空白行
:%s!s*//.*!! 去掉所有的“//”注释
:%s!s*/*\_.{-}*/s*!!g 去掉所有的“/* */”注释
:%s+/<love/>+&+g 完全匹配"love"的单词有多少,用自己替换自己计算出出现的次数,用'+'代替'/'
:%s= *$== 将所有行尾多余的空格删除
:g/^s*$/d 将所有不包含字符(空格也不包含)的空行删除
:#,# s/old/new/gc //这条命令作用不确定
:n,m s/old/new/gc 用new替换从n到m行里所有的old,每替换一次进行提醒
:n,m copy 10 拷贝n到m行到第10行下面。co
:n,m d 删除n到m行,包含第n行和第m行
:,24y 复制当前光标所在行到24行
:d 12 删除包含光标所在行在内的12行
:n,m move 10 移动n到m行到10行下面。m
:s/string/^M/ ^M由 ctrl V 和 ctrl M 获得,将字符替换成换行符
:s/string/ /g 将 string 换为换行符
:!cmd 执行终端命令
:r !command 将终端命令输出添加到当前行
:% !command 用终端命令输出替换当前文件内容
:%!xxd 将文件转换为十六进制, -b 选项转换为二进制,不可以多次转换
:%!xxd -r 将十六进制文件转换为文本
:w !sudo tee % 以普通用户身份打开的vim,修改后以root身份保存
:f 显示文件名,当前光标所在行的行号,总的行数,以及当前行所在文件中的百分比和当前光标所在的列的信息
:f file 生成一个内容为当前缓冲区的新的file文件,如果之前打开过文档,则对其不做任何改动。
:X 加密文件
:cat -n filename
:awk ‘{print $1}’ a.txt > b.txt
:bd 移出buffer,会使得当前编辑的文件移出内存,编辑新的为命令的文件,这样做意义不大
:sh 执行shell命令
:exit
:abbr sprt System.out.println 缩写命令,相当于定义宏
:ab
:r filename 复制指定文件的内容当光标所在处
:vim filename -r 恢复文件
:w! newfilename 另存为
: 12,24> 此命令将12行到14行的数据都向右移动一个tab
: 12,24>> 此命令将12行到14行的数据都向右移动两个tab
:args 显示编辑名单中的各个文件名列表
:edit ++enc=gbk 强制使用gbk编码打开文件,当vim打开文件编码错误时可以使用
:map 列出当前已定义的映射
:Sex 水平分割一个窗口,浏览文件系统,用enter键选择文件
:Vex 垂直分割一个窗口,浏览文件系统
:jumps 列出关于你曾经跳转过的位置的列表,你最近一个跳转的位置被特别以一个”>”号标记
:mark a 设置标记a,使用d'a删除光标到标记的内容,y'a将其复制到剪切版
:marks 列出自定义的标记,包含VIM内部自定义的标识
:only 只留下当前编辑的窗口,关闭其他的编辑窗口
:iab ( () 自动补全括号
:%!nl 要对包含空行的所有行进行编号(所有行之前插入行号^I)
:version 显示VIM版本信息,包含特性、编译方式及配置文件目录
:n1,n2 w! command 将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入(注意空格)例如 :1,4 w! grep tom
:options 打开一个新窗口, 在该窗口的最开头的注释下面是一个选项列表
:autocmd! 删除之前的自动命令
:runtime! syntax/2html.vim 转换成 html, 会按照你的颜色配置来转
:g/^/exec "s/^/".strpart(line(".")." ", 0, 4) 在行首插入行号
:filetype on 侦察文件类型
:filetype plugin on 载入文件类型插件
:filetype indent on 为特定文件类型载入相关缩进文件
:set all 显示所有的设置项
:set ai 设置自动缩进
:set ic 忽略大小写
:set ignorecase 搜索中忽略大小写
:set noic
:set selection=exclusive
:set selectmode=mouse,key 可以使用鼠标定位
:set mouse=v 可视模式下启用鼠标
:set mouse=a 完全启用鼠标
:set mouse= 关闭鼠标
:set nocompatible 不兼容 vi ,默认兼容
:set nowrapscan 禁止在搜索到文件两端时重新搜索
:set hlsearch 搜索时高亮显示被找到的文本
:set nohls 取消搜索高亮
:nohl 取消高亮
:set incsearch 即时搜索
:colorscheme desert 颜色设置,vim的配色方案在/usr/share/vim/vim74/colors 中
:set gdefault 行内替换
:set guifont=Courier_new:h14:b:cDEFAULT 设置字体和大小
:set lines=35 columns=118 设置默认窗口大小(图形)
:set vb t_vb= 置空命令错误时的铃声的终端代码
:set wildmenu 增强模式中的命令行自动完成操作
:set tabstop=4 实际的tab即为4个空格, 而不是缺省的8个
:set softtabstop=4 使得按退格键时可以退回缩进的长度,使用 expandtab 时特别有效
:set smarttab 在行和段开始处使用制表符
:set expandtab 在输入tab后,vim用恰当的空格来填充这个tab
:set noexpandtab 不要用空格代替制表符
:set sts=4 设置softtabstop为4
:set shiftwidth=4 设置自动缩进 4 个空格, 当然要设自动缩进先
:set autoindent 第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行
:set smartindent 第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编写上很有用
:set cindent 按照 c 语言的语法缩进
:set backspace=2
:set textwidth=79
:set ambiwidth=double
:set autowrite 设置自动存盘
:set showcmd 在Vim窗口的右下角显示一个完整的命令已经完成的部分
:set key= 取消文件加密
:set ai 设置文件起始位置(以光标当前位置为起始)set noai
:set readonly 设置文件只读
:set wrap 将超出屏幕行分多行显示 :set nowrap 关闭换行
:set cursorline 突出显示当前行
:set nobackup 覆盖文件时不备份
:set noswapfile
:set backupcopy=yes 设置备份时的行为为覆盖
:set tags=tags
:set autochdir 自动切换当前目录为当前文件所在的目录
:set report=0 在使用了底行命令后自动告诉我们文件的哪一http://facebook.com/行被改变过
:filetype plugin indent on 开启插件,文件类型检测,自动缩进
:set noerrorbells 关闭错误信息响铃
:set novisualbell 关闭使用可视响铃代替呼叫
:set matchtime=2 短暂跳转到匹配括号的时间
:set magic 设置魔术
:set hidden 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
:set guioptions-=T 隐藏GUI版本的工具栏
:set guioptions-=m 隐藏菜单栏
:set backspace=indent,eol,start 不设定在插入状态无法用退格键和 Delete 键删除回车符
:set cmdheight=1 设定命令行的行数为 1
:set laststatus=2 显示状态栏 (默认值为 1, 无法显示状态栏)
:set encoding=utf-8 相当于set enc
:set fileencoding=utf-8 相当于set fenc
:set fileencodings=utf-8 相当于set fencs
:set termencoding=utf-8
:set nobomb 去除utf-8的bom
:set bomb
:set bomb? 查看文件是否右bom标记
:set foldenable 开始折叠
:set foldmethod=syntax 设置语法折叠
:set foldcolumn=0 设置折叠区域的宽度
:setlocal foldlevel=1 设置折叠层数为1
:set foldclose=all 设置为自动关闭折叠
:set ff 显示当前文件的格式
:set ruler 光标位置打状态行
set ambiwidth=double 防止特殊符号无法正常显示
:set fileformats=unix,dos,mac 添加在配置文件中让vim自动识别文件格式
:set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc 这样在vim中打开文件时, 按 tab 键补齐文件名时它会忽略上述文件
:set statusline= %<%F[%1*%M%*%n%R%H]%= %y %0(%{&fileformat} %{&encoding} %c:%l/%L%) 设置在状态行显示的信息
:syntax on/off 色彩支持
Python 文件的一般设置,比如不要 tab 等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map <F12> :!python %<CR>
设置字典 ~/.vim/dict/文件的路径
autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
autocmd filetype php set dictionary=$VIMFILES/dict/php.dict
let b:javascript_fold=1 打开javascript折叠
let javascript_enable_domhtmlcss=1 打开javascript对dom、html和css的支持
let helptags=$VIMFILES.'/doc' 设定doc文档目录
多文件多窗口的操作
vim -On file1 file2 ... 使用大写的O参数来垂直分屏,n是数字,表示分成几个屏 vim -on file1 file2 ... 使用小写的o参数来垂直分屏 :sp filename 上下分割,并打开一个新的文件 :vsp filename 左右分割,并打开一个新的文件 :rew 多个文件时回到首个文件 :n 切换到下一个文件 :N 切换到上一个文件 :bn :bp 同时打开很多文件,使用这两个命令来切换下一个或上一个文件 :split filename 分割窗口,将会复制文件内容 :vsplit filename 分割窗口 :new filename :vnew filename :close 关闭当前窗口 :only 只留下当前编辑的窗口,关闭其他的编辑窗口 :qa 全部退出,同qall :wa 全部写入,同wall :wqa 同wqall :args 显示编辑名单中的各个文件名列表 :files buffers ls 列出目前 buffer 中的所有文件 ctrl w 窗口切换,连按两下,按方向键 ctrl w s 上下分割当前打开的文件 ctrl w v 左右分割当前打开的文件 ctrl w c 关闭当前窗口 ctrl w q 关闭当前窗口,如果只剩最后一个了,则退出Vim ctrl w h 把光标移到左边的屏 ctrl w H 屏幕向左移动 ctrl w j 把光标移到下边的屏 ctrl w J 屏幕向下移动 ctrl w k 把光标移到上边的屏 ctrl w K 屏幕向上移动 ctrl w l 把光标移到右边的屏 ctrl w L 屏幕向右移动 ctrl w = 让所有的屏都有一样的高度 ctrl W + 要扩大窗口 ctrl W - 要缩小窗口 窗口分割时,进行切换的按键热键需要连接两次,比如从下方窗口移动光标到上方窗口,需要<c-w><c-w>k,非常麻烦,现在重映射为<c-k>,切换的时候会变得非常方便 nnoremap <C-h> <C-w>h nnoremap <C-j> <C-w>j nnoremap <C-k> <C-w>k nnoremap <C-l> <C-w>l
文档的折叠,缩进
:set foldenable 开始折叠 :set foldmethod=syntax 设置语法折叠 :set foldcolumn=0 设置折叠区域的宽度 :setlocal foldlevel=1 设置折叠层数为1 :set foldclose=all 设置为自动关闭折叠 zf 折叠行(需加方向键) zo 展开折叠,空格也可以 zc 关闭折叠 用空格键来开关折叠(默认) nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> 使用v选定代码后,按'='会自动缩进代码。 使用v选定代码后,按'>'会将代码整体右移。
文件格式
有三种文件格式:unix, dos, mac. 三种格式的区别主要在于回车键的编码:dos 下是回车加换行,unix 下只有 换行符,mac 下只有回车符。 :e ++ff=dos filename 让vim用dos格式打开这个文件 :w ++ff=mac filename 以mac格式存储这个文件 :set fileformats=unix,dos,mac 添加在配置文件中让vim自动识别文件格式 :set ff
标记
使用标记可以快速移动。到达标记后,可以用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的知识
注释
方法一 块选择模式 Ctrl v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式输入注释符号如// 或 #,输入完毕之后,按两下esc键,Vim会自动将你选中的所有行首都加上注释 Ctrl v 进入块选择模式,选中你要删除的行首的注释符号,注意// 要选中两个,选好之后按d即可删除注释 方法二 替换命令 使用下面命令在指定的行首添加和撤销注释: :起始行号,结束行号s/^/注释符/g 4,9 s/^////g,可以将格式中的/替换为# :起始行号,结束行号s/^注释符//g 4,9 s/^////g :vmap <F5> :s/^////<CR> 选中内容,按 F5注释 :vmap <F6> :s/^////<CR> 选中内容,按F6取消注释 每当输入#号时,#号都会跑到行首。 在.vimrc中加入如下几行,即可解决这个问题。 复制代码 代码如下: if has("autocmd") filetype plugin indent on else set autoindent endif "has("autocmd")
统计字数
在visual(可视)模式下,选中需要统计的文本,按g,再按Ctr+g就会显示选择的行数,字符数。
:% s/./&/g 显示当前文本的字符数,行数,原理是用字符自己替换自己,看替换了多少次
复制粘贴
无论是vim内部抑或外部的复制([y]ank)、删除([d]elete)、粘贴([p]ut),在vim中都是借助registers(寄存器)实现的,vim共有9类寄存器: 无名(unnamed)寄存器:"" 缓存最后一次操作内容; 数字(numbered)寄存器:"0 - "9 缓存最近操作内容,复制与删除有别; 行内删除(small delete)寄存器:"- 缓存行内删除内容; 具名(named)寄存器:"a - "z或"A - "Z 指定时可用; 只读(read-only)寄存器:":, "., "%, "# 分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名; 表达式(expression)寄存器:"= 只读,用于执行表达式命令; 选择及拖拽(selection and drop)寄存器:"*, "+, "~ 存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用; 黑洞(black hole)寄存器:"_ 不缓存操作内容(干净删除); 模式寄存器(last search pattern):"/ 缓存最近的搜索模式。 粘贴剪切板内容 在命令模式下依次输入“"0p”粘贴0寄存器的内容。 对于非GUI版本的vim,系统剪切板是不可用的,须安装gvim。 设置了set mouse=a 后,按住 shift 键,可以将鼠标的处理交给 X 环境,方便复制粘贴。 :map <F7> :set nu<CR> :map <F8> :set nonu<CR> :map <F9> :set paste<CR> :map <F10> :set nopaste<CR>
map
:map 输出已定义的所有映射 map,nmap(命令模式),imap(输入模式),vmap(选中模式) 进行命令的宏定义。置可以预先写到 ~/.vimrc,写进配置文件时不用写前面的冒号。 :nmap :nohls 取消被搜索字串的高亮 :nmap w 命令模式下转移光标到不同窗口 :imap 输入模式下运行 :nmap :%s= *$== 删除所有行尾多余的空格 :nmap :cl 此命令用于查看所有的编译错误 :nmap :cc 此命令用于查看当前的编译错误 :nmap :cn 此命令用于跳到下一个出错位置 :nmap :cp 此命令用于跳到上一个出错位置 :imap 同上java 中: (注, 这里为什么说 java 中, 因为以下定义对其他文件格式不起作用, 下文会说到如何实现这一点) :nmap :JavaBrowser 此命令用于在窗口左部分割出一个新窗口, 里面的内容是 java 的资源树, 包括本文件中出现的类, 类的成员变量及成员方法, 就好像 JCreator
表现的那样。在这个窗口中输入 ? 会看到帮助。 嘿嘿, 很好用, 不过需要 ctags 支持. :nmap :comp javac:mak -d . % 此命令用 javac 编译 java 文件, 它会自动将光标定位到出错点. 不过这需要定义一个 javac.vim 文件在 $VIM/compiler 下,
在 javac.vim 里面只有两行字:setlocal makeprg=javac, setlocal errorformat=%A%f:%l: %m,%-Z%p^,%-C%.%# :nmap :comp ant:mak 此命令用 ant 编译 java 文件, 它会自动将光标定位到出错点. 一般来说, 安装vim 后已经有了compiler/ant.vim文件, 因此这个命令可以
直接使用。但是需要在当前目录下有 build.xml 文件, 当然还必须安装 ant 才行 Buffers操作快捷方式 nnoremap <C-RETURN> :bnext<CR> nnoremap <C-S-RETURN> :bprevious<CR> Tab操作快捷方式 nnoremap <C-TAB> :tabnext<CR> nnoremap <C-S-TAB> :tabprev<CR> 关于tab的快捷键 map tn :tabnext<cr> map tp :tabprevious<cr> map td :tabnew .<cr> map te :tabedit map tc :tabclose<cr> 一些不错的映射转换语法(如果在一个文件中混合了不同语言时有用) nnoremap <leader>1 :set filetype=xhtml<CR> nnoremap <leader>2 :set filetype=css<CR> nnoremap <leader>3 :set filetype=javascript<CR> nnoremap <leader>4 :set filetype=php<CR> nmap <leader>fd :se fileformat=dos<CR> nmap <leader>fu :se fileformat=unix<CR> 使用Ctrl+[l|n|p|cc] 来 list|next|previous|jump to count the result map <C-x>l <ESC>:cl<CR> map <C-x>n <ESC>:cn<CR> map <C-x>p <ESC>:cp<CR> map <C-x>c <ESC>:cc<CR> 选中状态下 Ctrl c 复制 vmap <C-c> y
autocmd
:set autocmd!
Python 文件的一般设置,比如不要 tab 等 autocmd FileType python set tabstop=4 shiftwidth=4 expandtab autocmd FileType python map <F12> :!python %<CR> 设置字典 ~/.vim/dict/文件的路径 autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict autocmd filetype css set dictionary=$VIMFILES/dict/css.dict autocmd filetype php set dictionary=$VIMFILES/dict/php.dict
vim的插件
http://www.ibm.com/developerworks/cn/linux/l-tip-vim2/index.html gzip(压缩文件支持) netrw(网络文件支持) engspchk(英文拼写检查) calendar(日历显示)cal project(文件的“项目”管理):Project taglist(源代码结构浏览):Tlist :let Tlist_Inc_Winwidth=0 cvsmenu(CVS集成) doxygen(文档注释语法加亮) matrix(一个好玩的脚本):Matrix syntax/2html.vim 让 Tohtml 产生有 CSS 语法的 html let html_use_css=1 ZenCoding.vim 很酷的插件,HTML代码生成 插件最新版:http://github.com/mattn/zencoding-vim 常用命令可看:http://nootn.com/blog/Tool/23/ checksyntax.vim JavaScript常见语法错误检查 默认快捷方式为 F5 let g:checksyntax_auto = 0 不自动检查 NeoComplCache.vim 自动补全插件 let g:AutoComplPop_NotEnableAtStartup = 1 let g:NeoComplCache_EnableAtStartup = 1 let g:NeoComplCache_SmartCase = 1 let g:NeoComplCache_TagsAutoUpdate = 1 let g:NeoComplCache_EnableInfo = 1 let g:NeoComplCache_EnableCamelCaseCompletion = 1 let g:NeoComplCache_MinSyntaxLength = 3 let g:NeoComplCache_EnableSkipCompletion = 1 let g:NeoComplCache_SkipInputTime = '0.5' let g:NeoComplCache_SnippetsDir = $VIMFILES.'/snippets' <TAB> completion. inoremap <expr><TAB> pumvisible() ? <C-n> : <TAB> snippets expand key imap <silent> <C-e> <Plug>(neocomplcache_snippets_expand) smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand) bufexplorer.vim Buffers切换 e 全屏方式查看全部打开的文件列表 v 左右方式查看 s 上下方式查看 taglist.vim 查看函数列表,需要ctags程序 F4 打开隐藏taglist窗口 if MySys() == windows 设定windows系统中ctags程序的位置 let Tlist_Ctags_Cmd = ' '.$VIMRUNTIME.'/ctags.exe ' elseif MySys() == linux 设定windows系统中ctags程序的位置 let Tlist_Ctags_Cmd = '/usr/bin/ctags' endif nnoremap <silent><F4> :TlistToggle<CR> let Tlist_Show_One_File = 1 不同时显示多个文件的tag,只显示当前文件的 let Tlist_Exit_OnlyWindow = 1 如果taglist窗口是最后一个窗口,则退出vim let Tlist_Use_Right_Window = 1 在右侧窗口中显示taglist窗口 let Tlist_File_Fold_Auto_Close=1 自动折叠当前非编辑文件的方法列表 let Tlist_Auto_Open = 0 let Tlist_Auto_Update = 1 let Tlist_Hightlight_Tag_On_BufEnter = 1 let Tlist_Enable_Fold_Column = 0 let Tlist_Process_File_Always = 1 let Tlist_Display_Prototype = 0 let Tlist_Compact_Format = 1 mark.vim 给各种tags标记不同的颜色,便于观看调式的插件。 m mark or unmark the word under (or before) the cursor manually input a regular expression. 用于搜索. clear this mark (i.e. the mark under the cursor), or clear all highlighted marks . * 当前MarkWord的下一个 # 当前MarkWord的上一个 / 所有MarkWords的下一个 ? 所有MarkWords的上一个 NERD_tree.vim 以树状方式浏览系统中的文件和目录 :ERDtree 打开NERD_tree :NERDtreeClose 关闭NERD_tree o 打开关闭文件或者目录 t 在标签页中打开 T 在后台标签页中打开 ! 执行此文件 p 到上层目录 P 到根目录 K 到第一个节点 J 到最后一个节点 u 打开上层目录 m 显示文件系统菜单(添加、删除、移动操作) r 递归刷新当前目录 R 递归刷新当前根目录 F3 NERDTree 切换 map <F3> :NERDTreeToggle<CR> imap <F3> <ESC>:NERDTreeToggle<CR> NERD_commenter.vim 注释代码用的, [count],cc 光标以下count行逐行添加注释(7,cc) [count],cu 光标以下count行逐行取消注释(7,cu) [count],cm 光标以下count行尝试添加块注释(7,cm) ,cA 在行尾插入 /* */,并且进入插入模式。 这个命令方便写注释。 注:count参数可选,无则默认为选中行或当前行 let NERDSpaceDelims=1 让注释符与语句之间留一个空格 let NERDCompactSexyComs=1 多行注释时样子更好看 DoxygenToolkit.vim 由注释生成文档,并且能够快速生成函数标准注释 let g:DoxygenToolkit_authorName= Asins - asinsimple AT gmail DOT com let g:DoxygenToolkit_briefTag_funcName= yes map <leader>da :DoxAuthor<CR> map <leader>df :Dox<CR> map <leader>db :DoxBlock<CR> map <leader>dc a /* */<LEFT><LEFT><LEFT> matchit.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转 % 正向匹配 g% 反向匹配 [% 定位块首 ]% 定位块尾 plugin - vcscommand.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转 SVN/git管理工具 a.vim
搭建vim开发环境
http://blog.csdn.net/tao_627/article/details/9320363
项目管理
http://blog.csdn.net/ithomer/article/details/7090318 http://blog.csdn.net/paul08colin/article/details/9232409
参考
http://www.vim.org/ http://wiki.dzsc.com/info/7313.html http://www.cnblogs.com/zourrou/archive/2011/04/16/2018493.html http://blog.csdn.net/wuyeyixi/article/details/7466327 http://blog.csdn.net/tao_627/article/details/9320363 http://blog.csdn.net/ithomer/article/details/7090318 http://blog.csdn.net/paul08colin/article/details/9232409 http://blog.163.com/zhang_sheng_cun/blog/static/46288667200792604435190/ http://linux.chinaunix.net/techdoc/desktop/2009/07/06/1122020.shtml http://be-evil.org/vim-how-to-comment-multi-line-code.html http://www.ibm.com/developerworks/cn/linux/l-tip-vim2/index.html http://vimcdoc.sourceforge.net/ 下载vim的pdf完全翻译版,里面很详细的介绍了vim http://www.vi-improved.org/vimrc.php 带有英文注释的.vimrc配置文件
unix/linux的哲学之一是使用独立的小工具完成复杂的工作。