一、ci" (由 change operator 和 text-object i" 組成)php
這個命令會找到當前光標所在行的下一個 " 括起來的字符串,清除引號裏面的內容,並進入 insert mode 以方便修改
用起來比解釋起來簡單,你可用 const char* hello = "Hello world."; 相似這樣的代碼來測試html
二、yaB (由 yank operator 和 text-object aB 組成)java
這個命令會將當前光標所在的代碼塊({} 括起來的內容,包括花括號自己)複製到默認 register,
方便在其餘地方用 p 貼出來(固然,寫代碼不鼓勵 copy and paste),你可用用任何一個 {} 來測試,而後找另一個地方 ppython
三、gUiw (由 make uppercase operator 和 text-object iw 組成)c++
這個命令會將當前光標所在的 word 所有變成大寫
如將 max_size 變成 MAX_SIZEgit
四、進入 insert mode 編輯(進入 insert mode 別隻用 i,要習慣視乎狀況,使用 I a A o O s C)github
五、對齊 gg=G 快速對齊整個文件shell
六、tabnew mytab 新建一個標籤mytab,:tabn 跳到下一個標籤,:tabp 跳到上一個標籤,用gt或gT在普通模式下跳轉到下一個和上一個標籤vim
七、切割窗口操做:split 水平方向切割一個窗口,:vsplit 豎直方向切割一個窗口,用Ctrl-w+方向鍵 在各個切割窗口之間切換。windows
八、宏操做
qa (將命令錄製到a這個剪貼板上{vim有好多個剪貼板,好比abcdefg……}) 3x (重複三遍刪除操做,將foo刪掉,其實也能夠用f命令來搭配,對複雜的狀況更適用) 0 (移動到行首) j (移動到下一行) q (中止錄製) 3@a (重複三遍剛纔錄製的命令,3就是將命令重複3遍,@就是運行,a就是剛剛保存的那個剪貼板)
十、配置.vimrc
"========================================================================= "Dessription: .vimrc文件,for Linux "Create: 2015年08月02日 15時13分 "Email:1002643051@qq.com "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
使用vundle安裝插件
https://github.com/chenpingzhao/Vundle.vim.git ~/.vim/bundle/vundle set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' Bundle 'tpope/vim-fugitive' Bundle 'Lokaltog/vim-easymotion' Bundle 'rstacruz/sparkup', {'rtp': 'vim/'} Bundle 'tpope/vim-rails.git' Bundle 'L9' Bundle 'FuzzyFinder' Bundle 'git://git.wincent.com/command-t.git' filetype plugin indent on " required! " " Brief help -- 此處後面都是vundle的使用命令 " :BundleList - list configured bundles " :BundleInstall(!) - install(update) bundles " :BundleSearch(!) foo - search(or refresh cache first) for foo " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles " " see :h vundle for more details or wiki for FAQ " NOTE: comments after Bundle command are not allowed..
配置語法高亮
:BundleInstall
加入的行
set laststatus=2 set t_Co=256 let g:Powerline_symbols='unicode' set encoding=utf8 colorscheme desert
sudo !! //以 root 賬戶執行上一條命令 python -m SimpleHTTPServer //利用 Python 搭建一個簡單的 Web 服務器,可經過 http://$HOSTNAME:8000 訪問 :w !sudo tee % //在 Vim 中無需權限保存編輯的文件 cd - //更改到上一次訪問的目錄 ^foo^bar //將上一條命令中的 foo 替換爲 bar,並執行 cp filename{,.bak} //快速備份或複製文件 mtr google.com //traceroute + ping !whatever:p //搜索命令歷史,但不執行 ssh-copy-id user@host //將 ssh keys 複製到 user@host 以啓用無密碼 SSH 登陸 ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg //把 Linux 桌面錄製爲視頻
參考
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