课程表

vim 命令手册

Vimscript 编程参考

工具箱
速查手册

Vim配置.vimrc方案

当前位置:免费教程 » 软件/图像 » Vim

中文配置

  1. "VIM配置件
  2. "2016-07-11
  3. "是否兼容VI,compatible为兼容,nocompatible为不完全兼容
  4. "如果设置为compatible,则tab将不会变成空格
  5. set nocompatible
  6. "设置鼠标运行模式为WINDOWS模式
  7. behave mswin
  8. "设置菜单语言
  9. set encoding=chinese
  10. set langmenu=zh_CN.UTF-8
  11. " =========
  12. " 功能函数
  13. " =========
  14. " 获取当前目录
  15. func GetPWD()
  16. return substitute(getcwd(), "", "", "g")
  17. endf
  18. " =====================
  19. " 多语言环境
  20. " 默认为 UTF-8 编码
  21. " =====================
  22. if has("multi_byte")
  23. set encoding=utf-8
  24. " English messages only
  25. "language messages zh_CN.utf-8
  26. if has('win32')
  27. language english
  28. let &termencoding=&encoding
  29. endif
  30. set fencs=utf-8,gbk,chinese,latin1
  31. set formatoptions+=mM
  32. set nobomb " 不使用 Unicode 签名
  33. if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
  34. set ambiwidth=double
  35. endif
  36. else
  37. echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
  38. endif
  39. " =========
  40. " 环境配置
  41. " =========
  42. " 保留历史记录
  43. set history=400
  44. " 命令行于状态行
  45. set ch=1
  46. set stl=\ [File]\ %F%m%r%h%y[%{&fileformat},%{&fileencoding}]\ %w\ \ [PWD]\ %r%{GetPWD()}%h\ %=\ [Line]\ %l,%c\ %=\ %P
  47. set ls=2 " 始终显示状态行
  48. " 制表符
  49. set tabstop=4
  50. "把tab转成空格
  51. "set expandtab
  52. set smarttab
  53. set shiftwidth=4
  54. set softtabstop=4
  55. " 状态栏显示目前所执行的指令
  56. set showcmd
  57. " 行控制
  58. set linebreak
  59. set nocompatible
  60. set textwidth=80
  61. set wrap
  62. " 行号和标尺
  63. set number
  64. set ruler
  65. set rulerformat=%15(%c%V\ %p%%%)
  66. " 控制台响铃
  67. :set noerrorbells
  68. :set novisualbell
  69. :set t_vb= "close visual bell
  70. " 插入模式下使用 <BS>、<Del> <C-W> <C-U>
  71. set backspace=indent,eol,start
  72. " 标签页
  73. set tabpagemax=20
  74. set showtabline=2
  75. " 缩进 智能对齐方式
  76. set autoindent
  77. set smartindent
  78. " 自动重新读入
  79. set autoread
  80. "代码折叠
  81. "设置折叠模式
  82. set foldcolumn=4
  83. "光标遇到折叠,折叠就打开
  84. "set foldopen=all
  85. "移开折叠时自动关闭折叠
  86. "set foldclose=all
  87. "zf zo zc zd zr zm zR zM zn zi zN
  88. "依缩进折叠
  89. " manual 手工定义折叠
  90. " indent 更多的缩进表示更高级别的折叠
  91. " expr 用表达式来定义折叠
  92. " syntax 用语法高亮来定义折叠
  93. " diff 对没有更改的文本进行折叠
  94. " marker 对文中的标志折叠
  95. set foldmethod=syntax
  96. "启动时不要自动折叠代码
  97. set foldlevel=100
  98. "依标记折叠
  99. set foldmethod=marker
  100. "语法高亮
  101. syntax enable
  102. syntax on
  103. "设置配色
  104. set guifont=Courier\ New:h12
  105. colorscheme desert
  106. "设定文件浏览器目录为当前目录
  107. set bsdir=buffer
  108. " 自动切换到文件当前目录
  109. set autochdir
  110. "在查找时忽略大小写
  111. set ignorecase
  112. set incsearch
  113. set hlsearch
  114. "设置命令行的高度
  115. set cmdheight=2
  116. "显示匹配的括号
  117. set showmatch
  118. "增强模式中的命令行自动完成操作
  119. set wildmenu
  120. "使PHP识别EOT字符串
  121. hi link phpheredoc string
  122. "php语法折叠
  123. let php_folding = 1
  124. "允许在有未保存的修改时切换缓冲区
  125. set hidden
  126. "实现全能补全功能,需要打开文件类型检测
  127. "filetype plugin indent on
  128. "打开vim的文件类型自动检测功能
  129. "filetype on
  130. "保存文件的格式顺序
  131. set fileformats=dos,unix
  132. "置粘贴模式,这样粘贴过来的程序代码就不会错位了。
  133. set paste
  134. "在所有模式下都允许使用鼠标,还可以是n,v,i,c等
  135. set mouse=a
  136. " 恢复上次文件打开位置
  137. set viminfo='10,\"100,:20,%,n~/.viminfo
  138. au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
  139. "取得光标处的匹配
  140. function! GetPatternAtCursor(pat)
  141. let col = col('.') - 1
  142. let line = getline('.')
  143. let ebeg = -1
  144. let cont = match(line, a:pat, 0)
  145. while (ebeg >= 0 || (0 <= cont) && (cont <= col))
  146. let contn = matchend(line, a:pat, cont)
  147. if (cont <= col) && (col < contn)
  148. let ebeg = match(line, a:pat, cont)
  149. let elen = contn - ebeg
  150. break
  151. else
  152. let cont = match(line, a:pat, contn)
  153. endif
  154. endwh
  155. if ebeg >= 0
  156. return strpart(line, ebeg, elen)
  157. else
  158. return ""
  159. endif
  160. endfunction
  161. " =========
  162. " 图形界面
  163. " =========
  164. if has('gui_running')
  165. " 只显示菜单
  166. set guioptions=mcr
  167. " 高亮光标所在的行
  168. set cursorline
  169. " 编辑器配色
  170. colorscheme desert
  171. "colorscheme zenburn
  172. "colorscheme dusk
  173. if has("win32")
  174. " Windows 兼容配置
  175. source $VIMRUNTIME/vimrc_example.vim
  176. source $VIMRUNTIME/mswin.vim
  177. "设置鼠标运行模式为WINDOWS模式
  178. behave mswin
  179. " f11 最大化
  180. map <f11> :call libcallnr('fullscreen.dll', 'ToggleFullScreen', 0)<cr>
  181. " 字体配置
  182. exec 'set guifont='.iconv('Courier_New', &enc, 'gbk').':h12:cANSI'
  183. "exec 'set guifontwide='.iconv('微软雅黑', &enc, 'gbk').':h12'
  184. endif
  185. if has("unix") && !has('gui_macvim')
  186. set guifont=Courier\ 10\ Pitch\ 11
  187. set guifontwide=YaHei\ Consolas\ Hybrid\ 11
  188. endif
  189. if has("mac") || has("gui_macvim")
  190. set guifont=Courier\ New:h16.00
  191. "set guifontwide=YaHei\ Consolas\ Hybrid:h16.00
  192. "set guifont=Monaco:h16
  193. "set guifont=Droid\ Sans\ Mono:h14
  194. set guifontwide=YouYuan:h14
  195. if has("gui_macvim")
  196. "set transparency=4
  197. set lines=200 columns=142
  198. let s:lines=&lines
  199. let s:columns=&columns
  200. func! FullScreenEnter()
  201. set lines=999 columns=999
  202. set fu
  203. endf
  204. func! FullScreenLeave()
  205. let &lines=s:lines
  206. let &columns=s:columns
  207. set nofu
  208. endf
  209. func! FullScreenToggle()
  210. if &fullscreen
  211. call FullScreenLeave()
  212. else
  213. call FullScreenEnter()
  214. endif
  215. endf
  216. endif
  217. endif
  218. endif
  219. " Under the Mac(MacVim)
  220. if has("gui_macvim")
  221. " Mac 下,按 \ff 切换全屏
  222. map <Leader><Leader> :call FullScreenToggle()<cr>
  223. " Set input method off
  224. set imdisable
  225. " Set QuickTemplatePath
  226. let g:QuickTemplatePath = $HOME.'/.vim/templates/'
  227. lcd ~/Desktop/
  228. " 自动切换到文件当前目录
  229. set autochdir
  230. " Set QuickTemplatePath
  231. let g:QuickTemplatePath = $HOME.'/.vim/templates/'
  232. endif
  233. "设置VIM状态栏
  234. set laststatus=2 "显示状态栏(默认值为1, 无法显示状态栏)
  235. set statusline= "[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
  236. set statusline+=%2*%-3.3n%0*\ " buffer number
  237. set statusline+=%f\ " file name
  238. set statusline+=%h%1*%m%r%w%0* " flag
  239. set statusline+=[
  240. if v:version >= 600
  241. set statusline+=%{strlen(&ft)?&ft:'none'}, " filetype
  242. set statusline+=%{&fileencoding}, " encoding
  243. endif
  244. set statusline+=%{&fileformat}] " file format
  245. set statusline+=%= " right align
  246. "set statusline+=%2*0x%-8B\ " current char
  247. set statusline+=0x%-8B\ " current char
  248. set statusline+=%-14.(%l,%c%V%)\ %<%P " offset
  249. if filereadable(expand("~/vimfiles/plugin/vimbuddy.vim"))
  250. set statusline+=\ %{VimBuddy()} " vim buddy
  251. endif
  252. " =========
  253. " 插件
  254. " =========
  255. filetype plugin indent on
  256. "html自动输入匹配标签,输入>之后自动完成匹配标签
  257. au FileType xhtml,xml so ~/.vim/plugin/html_autoclosetag.vim
  258. "Auto completion using the TAB key " 自动补全括号,引号
  259. "This function determines, wether we are on
  260. "the start of the line text(then tab indents)
  261. "or if we want to try auto completion
  262. function! InsertTabWrapper()
  263. let col=col('.')-1
  264. if !col || getline('.')[col-1] !~ '\k'
  265. return "\<TAB>"
  266. else
  267. return "\<C-N>"
  268. endif
  269. endfunction
  270. "Remap the tab key to select action with InsertTabWrapper
  271. inoremap <TAB> <C-R>=InsertTabWrapper()<CR>
  272. :inoremap ( ()<ESC>i
  273. :inoremap ) <c-r>=ClosePair(')')<CR>
  274. :inoremap { {}<ESC>i
  275. :inoremap } <c-r>=ClosePair('}')<CR>
  276. :inoremap [ []<ESC>i
  277. :inoremap ] <c-r>=ClosePair(']')<CR>
  278. :inoremap < <><ESC>i
  279. :inoremap > <c-r>=ClosePair('>')<CR>
  280. :inoremap " ""<ESC>i
  281. :inoremap ' ''<ESC>i
  282. function! ClosePair(char)
  283. if getline('.')[col('.') - 1] == a:char
  284. return "\<Right>"
  285. else
  286. return a:char
  287. endif
  288. endf
  289. " =========
  290. " AutoCmd
  291. " =========
  292. if has("autocmd")
  293. filetype plugin indent on
  294. " 括号自动补全
  295. func! AutoClose()
  296. :inoremap ( ()<ESC>i
  297. ":inoremap " ""<ESC>i
  298. ":inoremap ' ''<ESC>i
  299. :inoremap { {}<ESC>i
  300. :inoremap [ []<ESC>i
  301. :inoremap ) <c-r>=ClosePair(')')<CR>
  302. :inoremap } <c-r>=ClosePair('}')<CR>
  303. :inoremap ] <c-r>=ClosePair(']')<CR>
  304. endf
  305. func! ClosePair(char)
  306. if getline('.')[col('.') - 1] == a:char
  307. return "\<Right>"
  308. else
  309. return a:char
  310. endif
  311. endf
  312. augroup vimrcEx
  313. au!
  314. autocmd FileType text setlocal textwidth=80
  315. autocmd BufReadPost *
  316. \ if line("'\"") > 0 && line("'\"") <= line("$") |
  317. \ exe "normal g`\"" |
  318. \ endif
  319. augroup END
  320. "auto close quotation marks for PHP, Javascript, etc, file
  321. au FileType php,c,python,javascript exe AutoClose()
  322. " Auto Check Syntax
  323. au BufWritePost,FileWritePost *.js,*.php call CheckSyntax(1)
  324. " JavaScript 语法高亮
  325. au FileType html,javascript let g:javascript_enable_domhtmlcss = 1
  326. " 给 Javascript 文件添加 Dict
  327. if has('gui_macvim') || has('unix')
  328. au FileType javascript setlocal dict+=~/.vim/dict/javascript.dict
  329. else
  330. au FileType javascript setlocal dict+=$VIM/vimfiles/dict/javascript.dict
  331. endif
  332. " 格式化 JavaScript 文件
  333. "au FileType javascript map <f12> :call g:Jsbeautify()<cr>
  334. au FileType javascript set omnifunc=javascriptcomplete#CompleteJS
  335. " 给 CSS 文件添加 Dict
  336. if has('gui_macvim') || has('unix')
  337. au FileType css setlocal dict+=~/.vim/dict/css.dict
  338. else
  339. au FileType css setlocal dict+=$VIM/vimfiles/dict/css.dict
  340. endif
  341. " 增加 ActionScript 语法支持
  342. au BufNewFile,BufRead *.as setf actionscript
  343. " 自动最大化窗口
  344. if has('gui_running')
  345. if has("win32")
  346. au GUIEnter * simalt ~x
  347. "elseif has("unix")
  348. "au GUIEnter * winpos 0 0
  349. "set lines=999 columns=999
  350. endif
  351. endif
  352. endif
  353. let g:SuperTabDefaultCompletionType = '<c-x><c-u>'
  354. let g:SuperTabDefaultCompletionType = "context"
  355. let g:SuperTabRetainCompletionType=2
  356. " Disable AutoComplPop.
  357. let g:acp_enableAtStartup = 0
  358. " Use neocomplcache.
  359. let g:neocomplcache_enable_at_startup = 1
  360. " Use smartcase.
  361. let g:neocomplcache_enable_smart_case = 1
  362. " Use camel case completion.
  363. let g:neocomplcache_enable_camel_case_completion = 1
  364. " Use underbar completion.
  365. let g:neocomplcache_enable_underbar_completion = 1
  366. " Set minimum syntax keyword length.
  367. let g:neocomplcache_min_syntax_length = 3
  368. let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
  369. " Define dictionary.
  370. let g:neocomplcache_dictionary_filetype_lists = {
  371. \ 'default' : '',
  372. \ 'css' : '~/.vim/dist/css.dic',
  373. \ 'php' : '~/.vim/dict/php.dic',
  374. \ 'javascript' : '~/.vim/dict/javascript.dic',
  375. \ 'vimshell' : $HOME.'/.vimshell_hist',
  376. \ 'scheme' : $HOME.'/.gosh_completions'
  377. \ }
  378. let g:neocomplcache_snippets_dir="~/.vim/snippets"
  379. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
  380. inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<TAB>"
  381. " Define keyword.
  382. if !exists('g:neocomplcache_keyword_patterns')
  383. let g:neocomplcache_keyword_patterns = {}
  384. endif
  385. let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
  386. " Plugin key-mappings.
  387. imap <C-k> <Plug>(neocomplcache_snippets_expand)
  388. smap <C-k> <Plug>(neocomplcache_snippets_expand)
  389. inoremap <expr><C-g> neocomplcache#undo_completion()
  390. inoremap <expr><C-l> neocomplcache#complete_common_string()
  391. " Recommended key-mappings.
  392. " <CR>: close popup and save indent.
  393. inoremap <expr><CR> neocomplcache#smart_close_popup() . "\<CR>"
  394. " <TAB>: completion.
  395. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
  396. " <C-h>, <BS>: close popup and delete backword char.
  397. inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
  398. inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
  399. inoremap <expr><C-y> neocomplcache#close_popup()
  400. inoremap <expr><C-e> neocomplcache#cancel_popup()
  401. " AutoComplPop like behavior.
  402. "let g:neocomplcache_enable_auto_select = 1
  403. " Shell like behavior(not recommended).
  404. "set completeopt+=longest
  405. let g:neocomplcache_enable_auto_select = 1
  406. let g:neocomplcache_disable_auto_complete = 1
  407. inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<TAB>"
  408. inoremap <expr><CR> neocomplcache#smart_close_popup() . "\<CR>"
  409. " Enable omni completion.
  410. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
  411. autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
  412. autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
  413. autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
  414. autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
  415. " Enable heavy omni completion.
  416. if !exists('g:neocomplcache_omni_patterns')
  417. let g:neocomplcache_omni_patterns = {}
  418. endif
  419. let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::'
  420. "autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete
  421. let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
  422. let g:neocomplcache_omni_patterns.c = '\%(\.\|->\)\h\w*'
  423. let g:neocomplcache_omni_patterns.cpp = '\h\w*\%(\.\|->\)\h\w*\|\h\w*::'
  424. """"""""""""""""""""""""""""""
  425. " Tag list (ctags)
  426. """"""""""""""""""""""""""""""
  427. if has("win32") "设定windows系统中ctags程序的位置
  428. let Tlist_Ctags_Cmd = 'ctags'
  429. elseif has("linux") "设定linux系统中ctags程序的位置
  430. let Tlist_Ctags_Cmd = '/usr/bin/ctags'
  431. endif
  432. let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
  433. let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
  434. let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
  435. " =========
  436. " 快捷键
  437. " =========
  438. map cal :Calendar<cr>
  439. map cse :ColorSchemeExplorer
  440. "==== F3 NERDTree 切换 ====
  441. let NERDTreeWinSize=22
  442. "map ntree :NERDTree <cr>
  443. "map nk :NERDTreeClose <cr>
  444. "map <leader>n :NERDTreeToggle<cr>
  445. map <F3> :NERDTreeToggle<CR>
  446. imap <F3> <ESC>:NERDTreeToggle<CR>
  447. "==== F4 Tag list 切换 ====
  448. map <silent> <F4> :TlistToggle<cr>
  449. " 标签相关的快捷键 Ctrl
  450. map tn :tabnext<cr>
  451. map tp :tabprevious<cr>
  452. map tc :tabclose<cr>
  453. map <C-t> :tabnew<cr>
  454. map <C-p> :tabprevious<cr>
  455. map <C-n> :tabnext<cr>
  456. map <C-k> :tabclose<cr>
  457. map <C-Tab> :tabnext<cr>
  458. " 新建 XHTML 、PHP、Javascript 文件的快捷键
  459. nmap <C-c><C-h> :NewQuickTemplateTab xhtml<cr>
  460. nmap <C-c><C-p> :NewQuickTemplateTab php<cr>
  461. nmap <C-c><C-j> :NewQuickTemplateTab javascript<cr>
  462. nmap <C-c><C-c> :NewQuickTemplateTab css<cr>
  463. " 在文件名上按gf时,在新的tab中打开
  464. map gf :tabnew <cfile><cr>
  465. "jquery 配色
  466. au BufRead,BufNewFile *.js set syntax=jquery
  467. " jsLint for Vim
  468. let g:jslint_highlight_color = '#996600'
  469. " 指定 jsLint 调用路径,通常不用更改
  470. let g:jslint_command = $HOME . '\/.vim\/jsl\/jsl'
  471. " 指定 jsLint 的启动参数,可以指定相应的配置文件
  472. let g:jslint_command_options = '-nofilelisting -nocontext -nosummary -nologo -process'
  473. " 返回当前时间
  474. func! GetTimeInfo()
  475. "return strftime('%Y-%m-%d %A %H:%M:%S')
  476. return strftime('%Y-%m-%d %H:%M:%S')
  477. endfunction
  478. " 插入模式按 Ctrl + D(ate) 插入当前时间
  479. imap <C-d> <C-r>=GetTimeInfo()<cr>
  480. "缺省不产生备份文件
  481. set nobackup
  482. set nowritebackup
  483. " autoload _vimrc
  484. autocmd! bufwritepost _vimrc source %
  485. " ==================
  486. " plugin list
  487. " ==================
  488. "Color Scheme Explorer
  489. "jsbeauty \ff
  490. "NERDTree
  491. "Calendar
  492. "conquer_term
  493. "nerd_commenter
  494. "/*========================================*" 常用指令收集
  495. "\*========================================*/
  496. " 系统时间
  497. " :map <F7> a<C-R>=strftime("%c")<CR><esc>
  498. " :s/__date__/\=strftime("%c")/
  499. "/*---------------------------------------*" 基础命令
  500. "/*---------------------------------------*" ctrl+q 可以联合复制,粘贴,替换用 行操作
  501. " ctrl+w+j ctrl+w+k (:bn :bp :bd)
  502. " '. 它移动光标到上一次的修改行
  503. " `. 它移动光标到上一次的修改点
  504. " . 重复上次命令
  505. " <C-O> : 依次沿着你的跳转记录向回跳 (从最近的一次开始)
  506. " <C-I> : 依次沿着你的跳转记录向前跳
  507. " ju(mps) : 列出你跳转的足迹
  508. " :history : 列出历史命令记录
  509. " :his c : 命令行命令历史
  510. " :his s : 搜索命令历史
  511. " q/ : 搜索命令历史的窗口
  512. " q: : 命令行命令历史的窗口
  513. " g ctrl+g 计算文件字符
  514. " {,} 前进至上一段落前进至后一段落
  515. " gg,G(2G) 文件首
  516. " gd dw gf ga(进制转化)
  517. " gg=G 全篇自动缩进 , =G 单行缩进
  518. "* ci[ 删除一对 [] 中的所有字符并进入插入模式
  519. "* ci( 删除一对 () 中的所有字符并进入插入模式
  520. "* ci< 删除一对 <> 中的所有字符并进入插入模式
  521. "* ci{ 删除一对 {} 中的所有字符并进入插入模式
  522. "* cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
  523. "* ci” ci’ ci` 删除一对引号字符 (” 或 ‘ 或 `) 中所有字符并进入插入模式
  524. "
  525. "* vi[ 选择一对 [] 中的所有字符
  526. "* vi( 选择一对 () 中的所有字符
  527. "* vi< 选择一对 <> 中的所有字符
  528. "* vi{ 选择一对 {} 中的所有字符
  529. "* vit 选择一对 HTML/XML 的标签内部的所有字符
  530. "* vi” vi’ vi` 选择一对引号字符 (” 或 ‘ 或 `) 中所有字符
  531. " crl+] 函数原型处 crl+t 回 ( ctags )
  532. " ctl+p 自动补全( 编辑状态 )
  533. " :X 加密保存( 要输入密码 )
  534. " ? / (N n)
  535. " f(F,t) 查找字符
  536. " w(e) 移动光标到下一个单词.
  537. " 5fx 表示查找光标后第 5 个 x 字符.
  538. " 5w(e) 移动光标到下五个单词.
  539. " b 移动光标到上一个单词.
  540. " 0 移动光标到本行最开头.
  541. " ^ 移动光标到本行最开头的字符处.
  542. " $ 移动光标到本行结尾处.
  543. " H 移动光标到屏幕的首行.
  544. " M 移动光标到屏幕的中间一行.
  545. " L 移动光标到屏幕的尾行.
  546. " c-f (即 ctrl 键与 f 键一同按下)
  547. " c-b (即 ctrl 键与 b 键一同按下) 翻页
  548. " c-d (下半页) c-u(上半页) c-e (一行滚动)
  549. " zz 让光标所在的行居屏幕中央
  550. " zt 让光标所在的行居屏幕最上一行
  551. " zb 让光标所在的行居屏幕最下一行
  552. " 在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令
  553. " yw 表示拷贝从当前光标到光标所在单词结尾的内容.
  554. " dw 表示删除从当前光标到光标所在单词结尾的内容.
  555. " y0 表示拷贝从当前光标到光标所在行首的内容.
  556. " d0 表示删除从当前光标到光标所在行首的内容.
  557. " y$(Y) 表示拷贝从当前光标到光标所在行尾的内容.
  558. " d$(D) 表示删除从当前光标到光标所在行尾的内容.
  559. " yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容.
  560. " dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容.
  561. " s(S),a(A),x(X),D
  562. " yy 表示拷贝光标所在行.
  563. " dd 表示删除光标所在行.
  564. " 5yy 表示拷贝光标以下 5 行.
  565. " 5dd 表示删除光标以下 5 行.
  566. " y2fa 表示拷贝从当前光标到光标后面的第二个a字符之间的内容.
  567. " :12,24y 表示拷贝第12行到第24行之间的内容.
  568. " :12,y 表示拷贝第12行到光标所在行之间的内容.
  569. " :,24y 表示拷贝光标所在行到第24行之间的内容. 删除类似.
  570. " TAB 就是制表符, 单独拿出来做一节是因为这个东西确实很有用.
  571. " << 输入此命令则光标所在行向左移动一个 tab.
  572. " >> 输入此命令则光标所在行向右移动一个 tab.
  573. " 5>> 输入此命令则光标后 5 行向右移动一个 tab.
  574. " :5>>(>>>) :>>(>>>)5
  575. " :12,24> 此命令将12行到14行的数据都向右移动一个 tab.
  576. " :12,24>> 此命令将12行到14行的数据都向右移动两个 tab.
  577. " :set shiftwidth=4 设置自动缩进 4 个空格, 当然要设自动缩进先.
  578. " :set sts=4 即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格.
  579. " :set tabstop=4 实际的 tab 即为 4 个空格, 而不是缺省的 8 个.
  580. " :set expandtab 在输入 tab 后, vim 用恰当的空格来填充这个 tab.
  581. " :g/^/exec 's/^/'.strpart(line('.').' ', 0, 4) 在行首插入行号
  582. " set ai 设置自动缩进
  583. " 5ia<esc> 重复插入5个a字符
  584. "/*---------------------------------------*" 替换命令
  585. "/*---------------------------------------*" 替换文字 2009-02-34 ----> 2009-02-34 00:00:00
  586. " :%s/\(\d\{4\}-\d\{2\}-\d\{2\}\)/\1 00:00:00/g
  587. " :s/aa/bb/g 将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb
  588. " :s/\/bb/g 将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词
  589. " :%s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb
  590. " :12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb
  591. " :12,23s/^/#/ 将从12行到23行的行首加入 # 字符
  592. " :%s/fred/joe/igc 一个常见的替换命令,修饰符igc和perl中一样意思
  593. " s/dick/joe/igc则 对于这些满足条件的行进行替换
  594. " :g/^\s*$/d 空行(空格也不包含)删除.
  595. " :%s/\r//g 删除DOS方式的回车^M
  596. " :%s/ *$// 删除行尾空白(%s/\s*$//g)
  597. " :g!/^dd/d 删除不含字符串'dd'开头的行
  598. " :v/^dd/d 同上,译释:v == g!,就是不匹配!
  599. " :v/./.,/./-1join 压缩空行(多行空行合并为一行)
  600. " :g/^$/,/./-j 压缩空行(多行空行合并为一行)
  601. " :g/^/pu _ 把文中空行扩增一倍 (pu = put),原来两行间有一个空行,现在变成2个
  602. " :g/^/m0 按行翻转文章 (m = move)
  603. " :g/fred/,/joe/d not line based (very powerfull)
  604. " :g/<input\|<form/p 或者 要用\|
  605. " :g/fred/t$ 拷贝行,从fred到文件末尾(EOF)
  606. " :%norm jdd 隔行删除,译释:%指明是对所有行进行操作,norm指出后面是normal模式的指令,j是下移一行,dd是删除行
  607. " :'a,'bg/fred/s/dick/joe/igc ('a,'b指定一个范围:mark a ~ mark b)
  608. " g//用一个正则表达式指出了进行操作的行必须可以被fred匹配,g//是一个全局显示命令
  609. " /joe/e 光标停留在匹配单词最后一个字母处
  610. " /joe/e+1 光标停留在匹配单词最后一个字母的下一个字母处
  611. " /joe/s 光标停留在匹配单词第一个字母处
  612. " /^joe.*fred.*bill/ 标准正则表达式
  613. " /^[A-J]\+/ 找一个以A~J中一个字母重复两次或以上开头的行
  614. " /forum\(\_.\)*pent 多行匹配
  615. " /fred\_s*joe/i 中间可以有任何空白,包括换行符\n
  616. " /fred\|joe 匹配FRED或JOE
  617. " /\<fred\>/i 匹配fred,fred必须是一个独立的单词,而不是子串
  618. " /\<\d\d\d\d\> 匹配4个数字 \<\d\{4}\>
  619. " 列,替换所有在第三列中的str1
  620. " :%s:\(\(\w\+\s\+\)\{2}\)str1:\1str2:
  621. " 交换第一列和最后一列 (共4列)
  622. " :%s:\(\w\+\)\(.*\s\+\)\(\w\+\)$:\3\2\1:
  623. " 全局(global)显示命令,就是用 :g+正则表达式
  624. " 译释: :g/{pattern}/{cmd} 就是全局找到匹配的,然后对这些行执行命令{cmd}
  625. " :g/\<fred\>/ 显示所有能够为单词fred所匹配的行
  626. " :g/<pattern>/z#.5 显示内容,还有行号
  627. " :g/<pattern>/z#.5|echo '==========' 漂亮的显示
  628. "/*---------------------------------------*" 多文档操作 (基础)
  629. "/*---------------------------------------*" 用 :ls! 可以显示出当前所有的buffer
  630. " :bn 跳转到下一个buffer
  631. " :bp 跳转到上一个buffer
  632. " :wn 存盘当前文件并跳转到下一个
  633. " :wp 存盘当前文件并跳转到上一个
  634. " :bd 把这个文件从buffer列表中做掉
  635. " :b 3 跳到第3个buffer
  636. " :b main 跳到一个名字中包含main的buffer
  637. "/*---------------------------------------*" 列复制
  638. "/*---------------------------------------*" 译注:@#%&^#*^%#$!
  639. " :%s= [^ ]\+$=&&= : 复制最后一列
  640. " :%s= \f\+$=&&= : 一样的功能
  641. " :%s= \S\+$=&& : ft,还是一样
  642. " 反向引用,或称记忆
  643. " :s/\(.*\):\(.*\)/\2 : \1/ : 颠倒用:分割的两个字段
  644. " :%s/^\(.*\)\n\1/\1$/ : 删除重复行
  645. " 非贪婪匹配,\{-}
  646. " :%s/^.\{-}pdf/new.pdf/ : 只是删除第一个pdf
  647. " 跨越可能的多行
  648. " :%s/<!--\_.\{-}-->// : 又是删除多行注释(咦?为什么要说「又」呢?)
  649. " :help /\{-} : 看看关于 非贪婪数量符 的帮助
  650. " :s/fred/<c-r>a/g : 替换fred成register a中的内容,呵呵
  651. " 写在一行里的复杂命令
  652. " :%s/\f\+\.gif\>/\r&\r/g | v/\.gif$/d | %s/gif/jpg/
  653. " 译注:就是用 | 管道啦
  654. "/*---------------------------------------*" 大小写转换
  655. "/*---------------------------------------*" g~~ : 行翻转
  656. " vEU : 字大写(广义字)
  657. " vE~ : 字翻转(广义字)
  658. " ~ 将光标下的字母改变大小写
  659. " 3~ 将下3个字母改变其大小写
  660. " g~w 字翻转
  661. " U 将可视模式下的字母全改成大写字母
  662. " gUU 将当前行的字母改成大写
  663. " u 将可视模式下的字母全改成小写
  664. " guu 将当前行的字母全改成小写
  665. " gUw 将光标下的单词改成大写。
  666. " guw 将光标下的单词改成小写。
  667. " 文件浏览
  668. " :Ex : 开启目录浏览器,注意首字母E是大写的
  669. " :Sex : 在一个分割的窗口中开启目录浏览器
  670. " :ls : 显示当前buffer的情况
  671. " :cd .. : 进入父目录
  672. " :pwd
  673. " :args : 显示目前打开的文件
  674. " :lcd %:p:h : 更改到当前文件所在的目录
  675. " 译释:lcd是紧紧改变当前窗口的工作路径,% 是代表当前文件的文件名,
  676. " 加上 :p扩展成全名(就是带了路径),加上 :h析取出路径
  677. "/*========================================*" END
  678. "\*========================================*/
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号