閱讀573 返回首頁    go 阿裏雲 go 技術社區[雲棲]


TaoBeier 的 Vim 配置,支持 Python、Javascript、Golang 等

這是 TaoBeier 精心打造的 Vim 環境配置,支持 Python、Javascript、Vue.js、Golang 和 Markdown。

安裝

你需要一個有 Python 支持的 Vim 版本。請使用 vim --version | grep +python 來檢查確認。

依賴

Debian/Ubuntu 平台


  1. sudo apt-get install python vim exuberant-ctags git
  2. sudo pip install dbgp pep8 flake8 pyflakes isort

RedHat/CentOS 平台

CentOS 6.7 的 yum 源自帶的 Python 版本較舊,推薦自行安裝 Python2.7。


  1. sudo yum install python vim ctags git
  2. sudo pip install dbgp pep8 flake8 pyflakes isort

Mac OS 平台


  1. brew install python vim git
  2. wget http://tenet.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz && tar -zxvf ctags-5.8.tar.gz && cd ctags-5.8 && ./configure && make && sudo make install
  3. sudo pip install dbgp pep8 flake8 pyflakes isort

下載 vimrc 文件到用戶主目錄


  1. wget https://raw.githubusercontent.com/tao12345666333/vim/master/vimrc -O $HOME/.vimrc

安裝插件

打開 Vim,它將會自動安裝插件。請耐心等待它完成。或者你可以使用下麵的命令來自行安裝。


  1. vim -E -u $HOME/.vimrc +qall

享受你的 Vim 並個性化它吧!

支持特性

插件管理(Vundle)

在這份配置中,使用了 Vundle 作為插件管理器。Vundle 會自動接管 .vim 文件夾,所有配置好的插件將默認下載至~/.vim/bundle/, 在使用之前請確保.vim文件夾幹淨。 Vundle 的插件安裝需要觸發 git clone 操作,搜索需要 curl 支持。

配置(截取了部分)


  1. " let Vundle manage Vundle
  2. Plugin 'gmarik/vundle'
  3. " ============================================================================
  4. " Active plugins
  5. " You can disable or add new ones here:
  6. " Plugins from github repos:
  7. " Better file browser
  8. Plugin 'scrooloose/nerdtree'
  9. " Code commenter
  10. Plugin 'scrooloose/nerdcommenter'
  11. " Class/module browser
  12. Plugin 'majutsushi/tagbar'
  13. " Code and files fuzzy finder
  14. Plugin 'kien/ctrlp.vim'
  15. " Extension to ctrlp, for fuzzy command finder
  16. Plugin 'fisadev/vim-ctrlp-cmdpalette'
  17. " Zen coding
  18. Plugin 'mattn/emmet-vim'
  19. " Git integration
  20. Plugin 'motemen/git-vim'
  21. " Tab list panel
  22. Plugin 'kien/tabman.vim'

支持操作

命令 解釋
:PluginList 列出所有插件
:PluginInstall(!) 安裝/更新插件
:PluginSearch(!) foo 搜索 foo 相關的插件
:PluginClean(!) 清理未使用的插件
:PluginUpdate 更新插件

工程文件瀏覽(NERDTree)

在這份配置中, 使用了 NERDTree 查看文件列表。你可以在 NERDTree 中瀏覽和打開你文件係統中的目錄或文件。還可以進行文件隱藏和過濾,設置添加書簽等。在 NERDTree 窗口輸入?可獲得操作指南。這份配置中默認過濾掉了 .pyc.git.hg、 .svn等文件或文件夾的顯示。

配置


  1. " auto open or close NERDTree
  2. autocmd vimenter * if !argc() | NERDTree | endif
  3. autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
  4. " NERDTree -----------------------------
  5. " toggle nerdtree display
  6. map <F3> :NERDTreeToggle<CR>
  7. " open nerdtree with the current file selected
  8. nmap ,t :NERDTreeFind<CR>
  9. " don;t show these file types
  10. let NERDTreeIgnore = ['\.pyc$', '\.pyo$']

支持操作

快捷鍵 解釋
F3 打開/關閉 NERDTree
,t 打開 NERDTree 並選中當前文件

語法檢查(Syntastic)

在這份配置中,使用 Syntastic 插件進行語法靜態檢查. 包括但不限於C/C++/Go/Python/Haskell/Ruby/JavaScript等 。在本配置中對 JavaScript 的靜態檢查使用eslint,可以支持 ES6 及 JSX 等,細節可以參考 JSLint, JSHint 和 ESLint 的對比及 Vim 配置,想要切換檢查工具隻要修改對應位置即可。

配置


  1. " Syntastic ------------------------------
  2. " show list of errors and warnings on the current file
  3. nmap <leader>e :Errors<CR>
  4. " turn to next or previous errors, after open errors list
  5. nmap <leader>n :lnext<CR>
  6. nmap <leader>p :lprevious<CR>
  7. " check also when just opened the file
  8. let g:syntastic_check_on_open = 1
  9. " syntastic checker for javascript.
  10. " eslint is the only tool support JSX.
  11. " If you don't need write JSX, you can use jshint.
  12. " And eslint is slow, but not a hindrance
  13. " let g:syntastic_javascript_checkers = ['jshint']
  14. let g:syntastic_javascript_checkers = ['eslint']
  15. " don't put icons on the sign column (it hides the vcs status icons of signify)
  16. let g:syntastic_enable_signs = 0
  17. " custom icons (enable them if you use a patched font, and enable the previous
  18. " setting)
  19. let g:syntastic_error_symbol = ''
  20. let g:syntastic_warning_symbol = ''
  21. let g:syntastic_style_error_symbol = ''
  22. let g:syntastic_style_warning_symbol = ''

特性

保存時自動進行語法靜態檢查,方便的錯誤提示及靈活的可擴展性。

支持操作

快捷鍵 解釋
\e 打開錯誤列表
\n 移動到下一個錯誤位置
\p 移動到上一個錯誤位置

Git 支持(vim-fugitive 和 vim-signify)

在這份配置中,使用 vim-fugitive 和 vim-signify 做 Git 方麵的支持。可以進行常用的 Git 操作及優雅的狀態提示等(目前支持githg)。

配置


  1. " Signify ------------------------------
  2. " this first setting decides in which order try to guess your current vcs
  3. " UPDATE it to reflect your preferences, it will speed up opening files
  4. let g:signify_vcs_list = [ 'git', 'hg' ]
  5. " mappings to jump to changed blocks
  6. nmap <leader>sn <plug>(signify-next-hunk)
  7. nmap <leader>sp <plug>(signify-prev-hunk)
  8. " nicer colors
  9. highlight DiffAdd cterm=bold ctermbg=none ctermfg=119
  10. highlight DiffDelete cterm=bold ctermbg=none ctermfg=167
  11. highlight DiffChange cterm=bold ctermbg=none ctermfg=227
  12. highlight SignifySignAdd cterm=bold ctermbg=237 ctermfg=119
  13. highlight SignifySignDelete cterm=bold ctermbg=237 ctermfg=167
  14. highlight SignifySignChange cterm=bold ctermbg=237 ctermfg=227

支持操作

快捷鍵 解釋
:Git [args] 類似執行git命令一樣
:Gstatus 類似git status。在列表中使用-添加/移除文件
:Gcommit [args] 類似 git commit
:Gmerge [args] 類似 git merge
:Gpull [args] 類似 git pull
:Gpush [args] 類似 git push
:Gvdiff [revision] 類似 git push 但是會切分窗口

更多詳細的操作可以使用 :help fugitive

Tag 支持(Tagbar)

在這份配置中,使用了 Tagbar 做 Tag 支持,可以顯示當前文件中定義的類/變量等。

配置


  1. " Tagbar -----------------------------
  2. " toggle tagbar display
  3. map <F4> :TagbarToggle<CR>
  4. " autofocus on tagbar open
  5. let g:tagbar_autofocus = 1

支持操作

快捷鍵 解釋
F4 打開 Tag 列表

超全自動補全(Neocomplcache)

在這份配置中, 使用了 Neocomplcache 作為主要的自動補全插件。

配置


  1. " NeoComplCache ------------------------------
  2. " most of them not documented because I'm not sure how they work
  3. " (docs aren't good, had to do a lot of trial and error to make
  4. " it play nice)
  5. " Disable AutoComplPop.
  6. let g:acp_enableAtStartup = 0
  7. " Use neocomplcache.
  8. let g:neocomplcache_enable_at_startup = 1
  9. let g:neocomplcache_enable_ignore_case = 1
  10. " Use smartcase.
  11. let g:neocomplcache_enable_smart_case = 1
  12. let g:neocomplcache_enable_auto_select = 1
  13. let g:neocomplcache_enable_fuzzy_completion = 1
  14. let g:neocomplcache_enable_camel_case_completion = 1
  15. let g:neocomplcache_enable_underbar_completion = 1
  16. let g:neocomplcache_fuzzy_completion_start_length = 1
  17. let g:neocomplcache_auto_completion_start_length = 1
  18. let g:neocomplcache_manual_completion_start_length = 1
  19. " Set minimum syntax keyword length.
  20. let g:neocomplcache_min_keyword_length = 1
  21. let g:neocomplcache_min_syntax_length = 1
  22. let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
  23. " complete with workds from any opened file
  24. let g:neocomplcache_same_filetype_lists = {}
  25. let g:neocomplcache_same_filetype_lists._ = '_'
  26. " <TAB>: completion.
  27. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
  28. " Define keyword.
  29. if !exists('g:neocomplcache_keyword_patterns')
  30. let g:neocomplcache_keyword_patterns = {}
  31. endif
  32. let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
  33. " Plugin key-mappings.
  34. inoremap <expr><C-g> neocomplcache#undo_completion()
  35. inoremap <expr><C-l> neocomplcache#complete_common_string()
  36. " <C-h>, <BS>: close popup and delete backword char.
  37. inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
  38. inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
  39. inoremap <expr><C-y> neocomplcache#close_popup()
  40. inoremap <expr><C-e> neocomplcache#cancel_popup()

支持操作

快捷鍵 解釋
<Tab> 使用 Tab 鍵進行待提示項目選擇
<C-g> 取消補全
<C-l> 完成待補全項中共同的字符串
<C-h> 關閉待選項
<C-y> 關閉待選項
<C-e> 退出待選項
<BS> 關閉待選項

類 Tmux 的窗口選擇(vim-choosewin)

在這份配置中,使用了 vim-choosewin 進行窗口管理器。支持類 Tmux 的操作。

配置


  1. " Window Chooser ------------------------------
  2. " mapping
  3. nmap - <Plug>(choosewin)
  4. " show big letters
  5. let g:choosewin_overlay_enable = 1

支持操作

快捷鍵 解釋
- 開啟窗口選擇
- [ 選擇上一個 tab 的窗口
- ] 選擇下一個 tab 的窗口

更多操作可以使用 :help choosewin

靈活的 Tab 管理(TabMan)

在這份配置中使用了 TabMan 進行 Tab 管理,可以進行靈活切換與管理。

配置


  1. " TabMan ------------------------------
  2. " mappings to toggle display, and to focus on it
  3. let g:tabman_toggle = 'tl'
  4. let g:tabman_focus = 'tf'

支持操作

快捷鍵 解釋
tl 開啟/關閉 tab 管理
tf 將光標移動到 tab 管理窗口

優雅的狀態欄(Airline)

在這份配置中,使用了 Airline 提供更多狀態欄支持。

配置


  1. " Airline ------------------------------
  2. let g:airline_powerline_fonts = 1
  3. let g:airline_theme = 'bubblegum'
  4. "let g:airline#extensions#tabline#enabled = 1
  5. "let g:airline#extensions#tabline#left_sep = ' '
  6. "let g:airline#extensions#tabline#left_alt_sep = '|'
  7. let g:airline#extensions#whitespace#enabled = 1
  8. " to use fancy symbols for airline, uncomment the following lines and use a
  9. " patched font (more info on the README.rst)
  10. if !exists('g:airline_symbols')
  11. let g:airline_symbols = {}
  12. endif
  13. let g:airline_left_sep = ''
  14. let g:airline_left_alt_sep = ''
  15. let g:airline_right_sep = ''
  16. let g:airline_right_alt_sep = ''
  17. let g:airline_symbols.branch = ''
  18. let g:airline_symbols.readonly = ''
  19. let g:airline_symbols.linenr = ''

支持特性

可以顯示分支,語法靜態檢查結果等。

自動插入頭部

在這份配置中寫了個小函數根據新建的不同類型的文件,自動插入頭部,支持pythonruby、 bash等。

Markdown 實時預覽(vim-instant-markdown 和 vim-markdown)

在這份配置中,使用了 vim-instant-markdown 和 vim-markdown 做 Markdown 格式的支持,可以支持實時預覽等特性。

此功能需要有 node 環境支持,可以執行 npm -g install instant-markdown-d 進行安裝。

配置


  1. " Vim-markdown ------------------------------
  2. " Disabled automatically folding
  3. let g:vim_markdown_folding_disabled=1
  4. " LeTeX math
  5. let g:vim_markdown_math=1
  6. " Highlight YAML frontmatter
  7. let g:vim_markdown_frontmatter=1
  8. " Vim-instant-markdown -----------------
  9. " If it takes your system too much, you can specify
  10. " let g:instant_markdown_slow = 1
  11. " if you don't want to manually control it
  12. " you can open this setting
  13. " and when you open this, you can manually trigger preview
  14. " via the command :InstantMarkdownPreview
  15. let g:instant_markdown_autostart = 0

支持操作

快捷鍵 解釋
:InstantMarkdownPreview 手動觸發 markdown 文件的預覽

多遊標選擇、編輯等

在這份配置中,可以在高亮某單詞時,通過使用 Ctrl-n 或者 Ctrl-p 進行多遊標選擇,然後進行編輯或修改等操作。

快速文件查找

在這份配置中,可以通過使用,R進行全文查找或者,r進行快速查找,或者在當前字符串上使用,wR以及,wr來進行全文查找或者快速查找。

快速注釋

使用 NERDCommenter 插件完成快速注釋,可以通過\ci進行快速注釋。

Python 支持

完備的 Python 支持,可以自動識別當前是係統環境或虛擬環境,使用:Isort可智能對導入包進行排序,使用:PymodeLintAuto可自動格式化。

原文發布時間為:2017-01-08

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-31 10:32:24

  上一篇:go  CentOS 上的 FirewallD 簡明指南
  下一篇:go  在 Linux 中管理設備