vim 的使用
2015-01-14
这是我在 linux 下使用 vim 编写 c 程序一步一学习使用的 vim 技巧。
Undo/Redo
- u → undo
- <C-r> → redo
自动提示: <C-n> 和 <C-p>
在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能就出现了……
可视化选择
前面,我们看到了 <C-v>的示例 (在Windows下应该是<C-q>),我们可以使用 v 和 V。一但被选好了,你可以做下面的事:
- J → 把所有的行连接起来(变成一行)
- < 或 > → 左右缩进
- = → 自动给缩进
VIM to IDE
下面是我使用的一个 shell 脚本初始化我的 VIM 为一个 IDE
mkdir ~/.vim
unzip \*.zip -d ~/vim
### plugins docs
vim -c "helptags ~/.vim/doc" -c "q"
### system inclue
ctags -I __THROW -I __attribute_pure__ -I __nonnull -I __attribute__ --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/systags /usr/include/* /usr/include/sys/* /usr/include/bits/* /usr/include/netinet/* /usr/include/arpa/* /usr/include/mysql/*
cat ./vimrc.template >> ~/.vimrc
使用的插件为
其中 vimrc.template 为
set cursorline " 突出显示当前行
hi CursorLine cterm=NONE ctermbg=gray ctermfg=blue guibg=NONE guifg=NONE
"set number " 显示行号
set tags+=~/.vim/systags
set tags+=/root/nginx/nginx-1.7.9/tags
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"""""新文件标题
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
""定义函数SetTitle,自动插入文件头
func SetTitle()
"如果文件类型为.sh文件
if &filetype == 'sh'
call setline(1,"\#########################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Power by: -10")
call append(line(".")+2, "\# mail: hushi55@126.com ")
call append(line(".")+3, "\# Created Time: ".strftime("%c"))
call append(line(".")+4, "\#########################################################################")
call append(line(".")+5, "\#!/bin/bash")
call append(line(".")+6, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Power by: -10")
call append(line(".")+2, " > Mail: hushi55@126.com ")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " ************************************************************************/")
call append(line(".")+5, "")
endif
if &filetype == 'cpp'
call append(line(".")+6, "#include<iostream>")
call append(line(".")+7, "using namespace std;")
call append(line(".")+8, "")
endif
if &filetype == 'c'
call append(line(".")+6, "#include<stdio.h>")
call append(line(".")+7, "")
endif
" if &filetype == 'java'
" call append(line(".")+6,"public class ".expand("%"))
" call append(line(".")+7,"")
" endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc
参考
- http://coolshell.cn/articles/5426.html
- http://vimcdoc.sourceforge.net/doc/usr_29.html
- http://www.vimer.cn/2009/10/21/zai-vimzhong-shi-yong-ctags/
- http://www.vimer.cn/category/vim
ctags