一些常用的vim編輯器快捷鍵:
h」、「j」、「k」、「l」,分別控制光標左、下、上、右移一格。
按「ctrl」+「b」:屏幕往“后”移動一頁。
按「ctrl」+「f」:屏幕往“前”移動一頁。
按「ctrl」+「u」:屏幕往“后”移動半頁。
按「ctrl」+「d」:屏幕往“前”移動半頁。
按數字「0」:移到文章的開頭。
按「G」:移動到文章的最后。
按「$」:移動到光標所在行的“行尾”。
按「^」:移動到光標所在行的“行首”
按「w」:光標跳到下個字的開頭
按「e」:光標跳到下個字的字尾
按「b」:光標回到上個字的開頭
按「#l」:光標移到該行的第#個位置,如:5l,56l。
「x」:每按一次,刪除當前字符。
「#x」:例如,「6x」表示刪除光標所在位置的“后面”6個字符。
「X」:大寫的X,每按一次,刪除光標所在位置的“前面”一個字符。
「#X」:例如,「20X」表示刪除光標所在位置的“前面”20個字符。
「dd」:刪除光標所在行,並用下一行進行填充。
「#dd」:從光標所在行開始刪除#行。
「#G」:「15G」,表示移動光標至文章的第15行行首。
「w」:在冒號輸入字母「w」就可以將文件保存起來。
「q」:按「q」就是退出,如果無法離開vi,可以在「q」后跟一個「!」強制離開vim。
「wq」:一般建議離開時,搭配「w」一起使用,這樣在退出的時候還可以保存文件。
ZZ 立即保存文件並退出。
p 粘貼
u 撤銷一次
ctrl+r 反撤銷一次
多窗口功能:在命令行模式下輸入:sp,這樣兩個文件就可以同時在一個屏幕上顯示,然后先按下ctrl + w,然后放開所有按鍵后,再按下向下箭頭鍵或者向上箭頭鍵就可以進行窗口的選擇了,如果要關閉一個窗口,直接 : q 即可。
我的vimrc文件:

1 map <F9> :call SaveInputData()<CR> 2 func! SaveInputData() 3 exec "tabnew" 4 exec 'normal "+gP' 5 exec "w! /tmp/input_data" 6 endfunc 7 8 9 10 11 "colorscheme torte 12 "colorscheme murphy 13 "colorscheme desert 14 "colorscheme desert 15 "colorscheme elflord 16 colorscheme ron 17 18 19 20 21 "set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 22 "set termencoding=utf-8 23 "set encoding=utf-8 24 "set fileencodings=ucs-bom,utf-8,cp936 25 "set fileencoding=utf-8 26 27 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 28 " 顯示相關 29 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 30 "set shortmess=atI " 啟動的時候不顯示那個援助烏干達兒童的提示 31 "winpos 5 5 " 設定窗口位置 32 "set lines=40 columns=155 " 設定窗口大小 33 set go= " 不要圖形按鈕 34 "color asmanian2 " 設置背景主題 35 "set guifont=Courier_New:h10:cANSI " 設置字體 36 "syntax on " 語法高亮 37 autocmd InsertLeave * se nocul " 用淺色高亮當前行 38 autocmd InsertEnter * se cul " 用淺色高亮當前行 39 "set ruler " 顯示標尺 40 set showcmd " 輸入的命令顯示出來,看的清楚些 41 "set cmdheight=1 " 命令行(在狀態行下)的高度,設置為1 42 "set whichwrap+=<,>,h,l " 允許backspace和光標鍵跨越行邊界(不建議) 43 "set scrolloff=3 " 光標移動到buffer的頂部和底部時保持3行距離 44 set novisualbell " 不要閃爍(不明白) 45 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "狀態行顯示的內容 46 set laststatus=1 " 啟動顯示狀態行(1),總是顯示狀態行(2) 47 set foldenable " 允許折疊 48 set foldmethod=manual " 手動折疊 49 "set background=dark "背景使用黑色 50 set nocompatible "去掉討厭的有關vi一致性模式,避免以前版本的一些bug和局限 51 " 顯示中文幫助 52 if version >= 603 53 set helplang=cn 54 set encoding=utf-8 55 endif 56 " 設置配色方案 57 "colorscheme murphy 58 "字體 59 "if (has("gui_running")) 60 " set guifont=Bitstream\ Vera\ Sans\ Mono\ 11 61 "endif 62 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 63 "鍵盤命令 64 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 65 66 nmap <leader>w :w!<cr> 67 nmap <leader>f :find<cr> 68 69 " 映射全選+復制 ctrl+a 70 map <C-A> ggVGY 71 map! <C-A> <Esc>ggVGY 72 map <F12> gg=G 73 " 選中狀態下 Ctrl+c 復制 74 vmap <C-c> "+y 75 "去空行 76 nnoremap <F2> :g/^\s*$/d<CR> 77 "比較文件 78 nnoremap <C-F2> :vert diffsplit 79 "新建標簽 80 map <M-F2> :tabnew<CR> 81 "列出當前目錄文件 82 map <F3> :tabnew .<CR> 83 "打開樹狀文件目錄 84 map <C-F3> \be 85 "C,C++ 按F7編譯運行 86 map <F7> :call CompileRunGcc()<CR> 87 func! CompileRunGcc() 88 exec "w" 89 if &filetype == 'c' 90 exec "!g++ % -o %<" 91 exec "! ./%<" 92 elseif &filetype == 'cpp' 93 exec "!g++ % -o %<" 94 exec "! ./%<" 95 elseif &filetype == 'java' 96 exec "!javac %" 97 exec "!java %<" 98 elseif &filetype == 'sh' 99 :!./% 100 elseif &filetype == 'py' 101 exec "!python %" 102 exec "!python %<" 103 endif 104 endfunc 105 "C,C++的調試 106 map <F5> :call Rungdb()<CR> 107 func! Rungdb() 108 exec "w" 109 exec "!g++ % -g -o %<" 110 exec "!gdb ./%<" 111 endfunc 112 113 114 115 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 116 ""實用設置 117 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 118 " 設置當文件被改動時自動載入 119 set autoread 120 " quickfix模式 121 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr> 122 "代碼補全 123 set completeopt=preview,menu 124 "允許插件 125 filetype plugin on 126 "共享剪貼板 127 set clipboard+=unnamed 128 "從不備份 129 set nobackup 130 "make 運行 131 :set makeprg=g++\ -Wall\ \ % 132 "自動保存 133 set autowrite 134 set ruler " 打開狀態欄標尺 135 set cursorline " 突出顯示當前行 136 set magic " 設置魔術 137 set guioptions-=T " 隱藏工具欄 138 set guioptions-=m " 隱藏菜單欄 139 "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ 140 " 設置在狀態行顯示的信息 141 set foldcolumn=0 142 set foldmethod=indent 143 set foldlevel=3 144 set foldenable " 開始折疊 145 " 不要使用vi的鍵盤模式,而是vim自己的 146 set nocompatible 147 " 語法高亮 148 set syntax=on 149 " 去掉輸入錯誤的提示聲音 150 set noeb 151 " 在處理未保存或只讀文件的時候,彈出確認 152 set confirm 153 " 自動縮進 154 set autoindent 155 set cindent 156 " Tab鍵的寬度 157 set tabstop=4 158 " 統一縮進為4 159 set softtabstop=4 160 set shiftwidth=4 161 " 不要用空格代替制表符 162 set noexpandtab 163 " 在行和段開始處使用制表符 164 set smarttab 165 " 顯示行號 166 set number 167 " 歷史記錄數 168 set history=1000 169 "禁止生成臨時文件 170 set nobackup 171 set noswapfile 172 "搜索逐字符高亮 173 set hlsearch 174 set incsearch 175 "行內替換 176 set gdefault 177 "編碼設置 178 set enc=utf-8 179 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 180 "語言設置 181 set langmenu=zh_CN.UTF-8 182 set helplang=cn 183 " 我的狀態行顯示的內容(包括文件類型和解碼) 184 "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} 185 "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] 186 " 總是顯示狀態行 187 set laststatus=2 188 " 命令行(在狀態行下)的高度,默認為1,這里是2 189 set cmdheight=2 190 " 偵測文件類型 191 filetype on 192 " 載入文件類型插件 193 filetype plugin on 194 " 為特定文件類型載入相關縮進文件 195 filetype indent on 196 " 保存全局變量 197 set viminfo+=! 198 " 帶有如下符號的單詞不要被換行分割 199 set iskeyword+=_,$,@,%,#,- 200 " 字符間插入的像素行數目 201 set linespace=0 202 " 增強模式中的命令行自動完成操作 203 set wildmenu 204 " 使回格鍵(backspace)正常處理indent, eol, start等 205 set backspace=2 206 " 允許backspace和光標鍵跨越行邊界 207 set whichwrap+=<,>,h,l 208 " 可以在buffer的任何地方使用鼠標(類似office中在工作區雙擊鼠標定位) 209 set mouse=a 210 set selection=exclusive 211 set selectmode=mouse,key 212 " 通過使用: commands命令,告訴我們文件的哪一行被改變過 213 set report=0 214 " 在被分割的窗口間顯示空白,便於閱讀 215 set fillchars=vert:\ ,stl:\ ,stlnc:\ 216 " 高亮顯示匹配的括號 217 set showmatch 218 " 匹配括號高亮的時間(單位是十分之一秒) 219 set matchtime=1 220 " 光標移動到buffer的頂部和底部時保持3行距離 221 set scrolloff=3 222 " 為C程序提供自動縮進 223 set smartindent 224 " 高亮顯示普通txt文件(需要txt.vim腳本) 225 au BufRead,BufNewFile * setfiletype txt 226 "自動補全 227 :inoremap ) <c-r>=ClosePair(')')<CR> 228 ":inoremap { {<CR>}<ESC>O 229 ":inoremap } <c-r>=ClosePair('}')<CR> 230 :inoremap ] <c-r>=ClosePair(']')<CR> 231 function! ClosePair(char) 232 if getline('.')[col('.') - 1] == a:char 233 return "\<Right>" 234 else 235 return a:char 236 endif 237 endfunction 238 filetype plugin indent on 239 "打開文件類型檢測, 加了這句才可以用智能補全 240 set completeopt=longest,menu 241 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 242 243 244 245 246 247 248 "NERDtee設定 249 let NERDChristmasTree=1 250 let NERDTreeAutoCenter=1 251 let NERDTreeBookmarksFile=$VIM.'\Data\NerdBookmarks.txt' 252 let NERDTreeMouseMode=2 253 let NERDTreeShowBookmarks=1 254 let NERDTreeShowFiles=1 255 let NERDTreeShowHidden=1 256 let NERDTreeShowLineNumbers=1 257 let NERDTreeWinPos='left' 258 let NERDTreeWinSize=31 259 nnoremap f :NERDTreeToggle 260 map <F7> :NERDTree<CR>