1、ci" (由 change operator 和 text-object i" 组成)
这个命令会找到当前光标所在行的下一个 " 括起来的字符串,清除引号裏面的内容,并进入 insert mode 以方便修改
用起来比解释起来简单,你可用 const char* hello = "Hello world."; 类似这样的代码来测试
2、yaB (由 yank operator 和 text-object aB 组成)
这个命令会将当前光标所在的代码块({} 括起来的内容,包括花括号本身)复制到默认 register,
方便在其他地方用 p 贴出来(当然,写代码不鼓励 copy and paste),你可用用任何一个 {} 来测试,然后找另外一个地方 p
3、gUiw (由 make uppercase operator 和 text-object iw 组成)
这个命令会将当前光标所在的 word 全部变成大写
如将 max_size 变成 MAX_SIZE
4、进入 insert mode 编辑(进入 insert mode 别只用 i,要习惯视乎情况,使用 I a A o O s C)
5、对齐 gg=G 快速对齐整个文件
6、tabnew mytab 新建一个标签mytab,:tabn 跳到下一个标签,:tabp 跳到上一个标签,用gt或gT在普通模式下跳转到下一个和上一个标签
7、切割窗口操作:split 水平方向切割一个窗口,:vsplit 竖直方向切割一个窗口,用Ctrl-w+方向键 在各个切割窗口之间切换。
8、宏操作
qa (将命令录制到a这个剪贴板上{vim有好多个剪贴板,比如abcdefg……}) 3x (重复三遍删除操作,将foo删掉,其实也可以用f命令来搭配,对复杂的情况更适用) 0 (移动到行首) j (移动到下一行) q (停止录制) [email protected] (重复三遍刚才录制的命令,3就是将命令重复3遍,@就是运行,a就是刚刚保存的那个剪贴板)
10、配置.vimrc
"========================================================================= "Dessription: .vimrc文件,for Linux "Create: 2015年08月02日 15时13分 "Email:[email protected] "Author:Kevin "========================================================================= "历史记录数 set history=10000 "显示行号 set number "状态列的行数,预设一行,建议设成两行 set cmdheight=3 "保存全局变量,! 以大写字母开头的全局变数,并且不含有小写字母 set viminfo+=! "让汉字以2个宽度显示 set ambiwidth=double "Fill space between windows 在被分割的窗口间显示空白,便于阅读 set fillchars=stl:\ ,stlnc:\ ,vert: "显示标尺 在状态行上显示光标所在位置的行号和列号 set ruler set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%) "在状态列显示目前的模式,命令行显示vim当前模式 set showmode "输入的命令显示出来,看的清楚些 set showcmd "光标移动到buffer的顶部和底部时保持3行距离 set scrolloff=3 "状态行显示的内容 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "启动显示状态行(1),总是显示状态行(2) set laststatus=2 "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 set nocompatible "启动的时候不显示那个援助索马里儿童的提示 set shortmess=atI "代码补全 set completeopt=preview,menu "设置当文件被改动时自动载入 set autoread "自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、‘{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。 set autowrite "设置魔术匹配控制,可以通过:h magic查看更详细的帮助信息 set magic "在处理未保存或只读文件的时候,弹出确认 set confirm "字符间插入的像素行数目 set linespace=0 "增强模式中的命令行自动完成操作 set wildmenu "可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set mouse=a set selection=exclusive set selectmode=mouse,key "通过使用: commands命令,告诉我们文件的哪一行被改变过 set report=0 "不让vim发出讨厌的滴滴声 set noerrorbells "在执行宏命令时,不进行显示重绘;在宏命令执行完成后,一次性重绘,以便提高性能。 set lazyredraw "===================语法====================================================== "打开语法高亮 syntax enable "允许按指定主题进行语法高亮,而非默认高亮主题 syntax on "设置颜色 colorscheme desert set background=dark color ron " desert torte "用浅色高亮当前行 autocmd InsertEnter * se cul "设置高亮显示当前行 set cursorline "开启高亮光标列 set cursorcolumn "使回格键(backspace)正常处理indent, eol, start等 set backspace=2 "允许backspace和光标键跨越行边界 set whichwrap+=<,>,h,l "===================Tab and indent=============================================== "不要用空格代替制表符 set expandtab "在行和段开始处使用制表符 set smarttab "统一缩进为4 set shiftwidth=4 set tabstop=4 set softtabstop=4 "设置自动缩排 set autoindent "cindent对c语法的缩进更加智能灵活 set cindent "比autoindent稍智能的自动缩进,在这种缩进模式中,每一行都和前一行有相同的缩进量 粘贴时候使用 set paste set smartindent "==============文件备份和编码=========================================================== "不自动保存备份文件 set nobackup "禁止生成临时文件 set noswapfile "自动切换当前目录为当前文件所在的目录 set autochdir "设定默认解码 set fileencodings=utf-8 set fileformats=unix,dos,mac set fenc=utf-8 set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 "====================Text search and replace===================================== "高亮显示匹配的括号 set showmatch "匹配括号高亮的时间(单位是十分之一秒) set matchtime=2 "高亮显示查找搜索的值 set hlsearch "在搜索时,输入的词句的逐字符高亮(类似firefox的搜索 set incsearch "搜索时忽略大小写,但在有一个或以上大写字母时仍大小写敏感 set ignorecase "如果搜索模式包含大写字符,不使用 ‘ignorecase‘ 选项。只有在输入搜索模式并且打开 ‘ignorecase‘ 选项时才会使用 set smartcase "搜索时,不循环搜索 set nowrapscan "带有如下符号的单词不要被换行分割 set iskeyword+=_,$,@,%,#,-,. set helplang=cn set list listchars=tab:\|\ ,trail:.,extends:>,precedes:< "状态行颜色 highlight StatusLine guifg=SlateBlue guibg=Yellow " 状态行颜色 highlight StatusLineNC guifg=Gray guibg=White " 状态行颜色 "高亮字符,让其不受100列限制 highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white match OverLength ‘\%101v.*‘ "与windows共享剪贴板 set clipboard+=unnamed " 自动格式化 set formatoptions=tcrqn "============CTags的设定 ============================================================= let Tlist_Ctags_Cmd = ‘/usr/bin/ctags‘ "按照名称排序 let Tlist_Sort_Type = "name" "在右侧显示窗口 let Tlist_Use_Right_Window = 1 "压缩方式 let Tlist_Compart_Format = 1 "如果只有一个buffer,kill窗口也kill掉buffer let Tlist_Exist_OnlyWindow = 1 "不要关闭其他文件的tags let Tlist_File_Fold_Auto_Close = 0 "不要显示折叠树 let Tlist_Enable_Fold_Column = 0 "不同时显示多个文件的tag,只显示当前文件的 let Tlist_Show_One_File = 1 "============Autocommands ============================================================= " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示 if has("autocmd") autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number autocmd FileType xml,html vmap <C-o> <ESC>‘<i<!--<ESC>o<ESC>‘>o--> autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>‘<o/*<ESC>‘>o*/ autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim \ if line("‘\"") > 0 && line("‘\"") <= line("{1}quot;) | \ exe "normal g`\"" | \ endif endif " has("autocmd") "用空格键来开关折叠 set foldenable "set foldmethod=manual set foldmethod=syntax set foldlevel=100 nnoremap <space> @=((foldclosed(line(‘.‘)) < 0) ? ‘zc‘ : ‘zo‘)<CR> "设置快捷方式 Set mapleader let mapleader = "," "快捷加载,当输入",ss"时,加载 .vimrc 文件 map <silent> <leader>ss :source ~/.vimrc<cr> "快速打开编辑 .vimrc配置文件--->",ee" map <silent> <leader>ee :e ~/.vimrc<cr> "快速保存文件--->",w" map <silent> <leader>w :w<cr> "快速保存并退出文件--->",w" map <silent> <leader>wq :wq<cr> map <silent> <F9> :TlistToggle<cr> "使用前导键加w来实现加速文件保存,来代替:w!加回车 nmap w :w!<cr> nmap z :x<cr> "ctages映射 autocmd! bufwritepost .vimrc source ~/.vimrc " 高亮显示普通txt文件(需要txt.vim脚本) au BufRead,BufNewFile * setfiletype txt "============自动补全 ============================================================= :inoremap ( ()<ESC>i :inoremap ) <c-r>=ClosePair(‘)‘)<cr> :inoremap { {<CR>}<ESC>O :inoremap } <c-r>=ClosePair(‘}‘)<cr> :inoremap [ []<ESC>i :inoremap ] <c-r>=ClosePair(‘]‘)<cr> :inoremap " ""<ESC>i :inoremap ‘ ‘‘<ESC>i function! ClosePair(char) if getline(‘.‘)[col(‘.‘) - 1] == a:char return "\<Right>" else return a:char endif endfunction "侦测文件类型 载入文件类型插件 filetype plugin indent on "关掉智能补全时的预览窗口 set completeopt=longest,menu
CTags安装
http://ctags.sourceforge.net/ tar zvxf ctags-5.6.tar.gz cd ctags-5.6 ./configure make make install ctags -R --c++-kinds=+p --fields=+iaS --extra=+q src
CTags插件下载
cd /usr/local/src wget http://www.vim.org/scripts/download_script.php?src_id=19574 mv download_script.php\?src_id\=19574 vimtag.zip unzip vimtag.zip cp doc plugin ~/.vim/
使用下面的命令生成帮助标签(下面的操作在vim中进行)
:helptags ~/.vim/doc :help taglist.txt
参考
http://easwy.com/blog/archives/advanced-vim-skills-omin-complete/comment-page-1/
http://www.vim.org/scripts/script.php?script_id=273
https://github.com/ma6174/vim