在开始操作前,先普及下基础概念,然后约定一下表达规范。
1)Vim存在多个配置文件vimrc,比如/etc/vimrc,此文件影响整个系统的Vim。还有~/.vimrc,此文件只影响本用户的Vim。而且~/.vimrc文件中的配置会覆盖/etc/vimrc中的配置。这里我们只修改~/.vimrc文件。
2)Vim的插件(plugin)安装在Vim的runtimepath目录下,你可以在Vim命令行下运行"set rtp“命令查看。这里我们选择安装在~/.vim目录,没有就创建一个。
3)当本文说”在Vim命令行下运行cmdxx命令“时,意思是指在Vim的命令行模式下运行cmdxx命令,即在Vim的正常模式下通过输入冒号":"进入命令行模式,然后紧接着输入命令cmdxx。在后文描述中都会省略冒号":"输入。
4)如果没有说明“在Vim命令行下运行某命令”,则是在shell中执行该命令。
5)如果命令中间被空白符间隔或有与正文容易混淆的字符,我会用双引号将命令与正文区分。所以读者在实际操作时,不要输入命令最前面和最后面引号。
nnoremap <unique> <S-Up> <C-W><Up>
map <C-j> <C-W>j
这两行配置是可以共存的
行首添加一个字符串:%s/^/要插入的字符串
行尾添加一个字符串:%s/$/要插入的字符串
:%s/s+$//g 删除行尾空格 ,或者指定行 :#,#s/s+$//g 或 用V选择后:s/s+$//g
:%s/^M$//g 删除行尾所有 ^M 字符 :%s/
//g
:%s/:.*//g 删除从冒号开始直到行尾的所有部分
列编辑数字、字母
ctrl+v选择列,敲入:进入命令模式,输入I-1以第一个数字出发,幅度为-1顺序构建。
ctrl+v选择列,输入:IA 字母只支持大写,小写再次编辑用~去转。
//http://stackoverflow.com/questions/10760326/merge-multiple-lines-two-blocks-in-vim
合并块(命令不能在合并处加间隔符需提前编辑后续块前缀)
:1,4s/$/=getline(line('.')+4)/ | 5,8d
或者 :5,8del | let l=split(@") | 1,4s/$/=remove(l,0)/
隔行合并即1和2,3和4,5和6.。。指定行数可以用V选择后:g/^/ join
:1,4g/^/ join
行变列
:%s/s+/
/g
合并所有行
:%j 或者 :%j!(此法不会再行尾添加空格)
:1,$j 或者 :%s/
//g 或者ctl+v选择后+J
制作宏:normal 下按q进入制作,按q取名,编辑, q结束制作
再@q, 执行一次宏, 6@q就执行了6次.
ci'、ci"、ci(、ci[、ci{、ci< - 分别更改这些配对标点符号中的文本内容
di'、di"、di(或dib、di[、di{或diB、di< - 分别删除这些配对标点符号中的文本内容
yi'、yi"、yi(、yi[、yi{、yi< - 分别复制这些配对标点符号中的文本内容
vi'、vi"、vi(、vi[、vi{、vi< - 分别选中这些配对标点符号中的文本内容
把上面的 i 改成 a 则可以连带配对的标点一起操作
viw 光标在单词的任意字符上选中单词
exvim有补全功能,ctrl+n也是
gd 命令查找与光标所在单词相匹配的单词, 并将光标停留在文档的非注释段中第一次出现这个单词的地方..
移动光标:
Ctrl + b:上滚一屏. 即 page up.
Ctrl + f:下滚一屏. 即 page down.
Ctrl + d:下滚半屏
Ctrl + u:上滚半屏
G:移到文件最后
W:移到下个字的开头
B:跳至上个字的开头
:g/^s*$/d 将所有不包含字符(空格也不包含)的空行删除.
粘贴时不置换“剪贴板” 配置表里增加 xnoremap p pgvy
Alt+1 2 3。。5改变当前单词的背景色
删除包含特定字符的行:
g/pattern/d (全局删除匹配行)
1,5g/pattern/d (删除第1-5行里的匹配行)
删除不包含指定字符的行:
v/pattern/d
g!/pattern/d
删除指定的行:
:x,.d #从x行删除到当前行;
:.,xd #从当前行删除到x行;
:x,.+3d #从x行删除到当前行后第三行;
:x,.-1d #从x行删除到当前行前一行。
删除重复行先执行:sort在执行下面的一条命令,当然更短平快的是:sort u
:g/^(.*)$
1$/d
:g/^(.+)$ 1$/d
:g/\%(^1$ )@<=(.*)$/d
:%s/^(.*)
1$/1/ : delete duplicate lines
:%s/^(.*)(
1)+$/1/ : delete multiple duplicate lines [N]
:x 等价于 :wq
连续单词搜索 /(<w+>)\_s*1 具体单词连续搜索 /(<sheniu>)\_s*1
配置表设置搜索匹配高亮 set
hlsearch
按时间回退文本::earlier 1m 可以回退到1分钟前的状态 相反的转换:later
把光标下的文字置于屏幕中间 zz
编辑器转为16进制编辑器 :%!xxd
多列替换
实例:手上有一列宏没有注释。格式化加上注释。
1.把多列注释直接写新的行首。
2.列编辑注释前面增加容下定义长度空格。(列选中后>或者shift+.就是后缩,<就是缩进)
3.列编辑选中定义复制或者剪切。列选中注释前的预留格子。p替换。
大神指令链接 http://www.rayninfo.co.uk/vimtips.html
-------------------------------------------------ex
<leader>] 全局搜索函数定义和声明
C-] 跳转到函数声明
<leader>r 移除搜索结果中文本部分不包含vim搜索模式中所包含的。
<leader>d 移除搜索结果中文本部分包含搜索模式包含的。
<leader>fr 移除搜索结果中文件部分不包含vim搜索模式中所包含的。
<leader>fd 移除说说结果中文件部分包含搜索模式包含的。
"配置 全字匹配全局搜素
nmap <leader>ff :call exgsearch#search(expand('<cword>'), '-w')<CR>
解决 gvim Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded
let Tlist_Ctags_Cmd = g:exvim_custom_path.'/bin/ctags.exe'
文件切换键映射:
nnoremap <A-]> :bn<CR>
nnoremap <A-[> :bp<CR>
debian下安装
解压后执行sh unix/install.sh sh osx/replace-my-vim.sh
sudo apt-get install cTags
sudo apt-get install id-utils
sudo apt-get install cscope
然后替换配置文件rc,a.vim目录/usr/share/vim/vim74/plugin