VIM (Unix及類Unix系統文本編輯器)javascript
Vim是一個相似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增長了不少特性。VIM是開源軟件。css
Vim廣泛被推崇爲類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不一樣變體。1999 年Emacs被選爲Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs在文本編輯方面都是很是優秀的。html
系統原生的Vim文本編輯器功能單一,做者介紹一種K-vim高級配置,具備代碼補全等多項功能。本文是在原做者的基礎上進行二次改進,原文地址:https://github.com/wklken/k-vim。java
注意:有些系統須要執行:sudo apt-get install vim #安裝Vim編輯器後才能進行安裝node
git clone https://github.com/wklken/k-vim.git
注意:若是未安裝git,須要執行:sudo apt-get install git #安裝git後才能進行安裝,下載目錄就是當前目錄。
python
# ubuntu sudo apt-get install ctags sudo apt-get install build-essential cmake python-dev #編譯YCM自動補全插件依賴 sudo apt-get install silversearcher-ag # centos sudo yum install python-devel.x86_64 sudo yum groupinstall 'Development Tools' sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install the_silver_searcher sudo yum install cmake # mac brew install ctags brew install the_silver_searcher
sudo pip install flake8 yapf
注意:執行上面命令須要提早安裝pip支持:nginx
sudo apt-get update git
sudo apt-get upgradegithub
# 安裝Pipgolang
sudo apt-get install python-pip
# 檢查 pip 是否安裝成功
pip -V
# 安裝jshint和jslint,用於javascript語法檢查 # 須要nodejs支持,各個系統安裝見文檔 https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager # ubuntu sudo apt-get install nodejs npm sudo npm install -g jslint sudo npm install jshint -g sudo npm install -g eslint eslint-plugin-standard eslint-plugin-promise eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-html babel-eslint # mac brew install node npm install jshint -g npm install jslint -g npm install -g eslint eslint-plugin-standard eslint-plugin-promise eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-html babel-eslint
進入目錄, 執行安裝 # 注意原先裝過的童鞋, 重裝時,不要到~/.vim下執行(這是軟鏈接指向k-vim真是目錄),必須到k-vim原生目錄執行 # 會進入安裝插件的列表,一安裝是從github clone的,徹底取決於網速, 以後會自動編譯 YCM, 編譯失敗的話須要手動編譯, 有問題見YCM文檔 # 若是發現有插件安裝失敗 能夠進入vim, 執行`:PlugInstall' cd k-vim/ sh -x install.sh
注意:執行安裝時,若是已經將官方源換爲國內源,須要改回官方源才能正常安裝,不然會卡住不動,致使安裝失敗。
執行命令:cd ~ && rm -rf .vim .vimrc .vimrc.bundles && cd -
執行:vi hello.c
按「i」進入編輯模式,輸入#include等函數將會出現自動補齊選項,按回車鍵選中。
注意:若是沒有設定文件名,例如XX.c,將不會出現文件補齊,很容易理解。
編輯vimrc.bundles中
" more options: ['json', 'nginx', 'golang', 'ruby', 'less', 'json', ] let g:bundle_groups=['python', 'javascript', 'markdown', 'html', 'css', 'tmux', 'beta']
選定集合後, 使用插件管理工具進行安裝/更新
使用 vim-plug 管理插件
vim-plug
常見問題: vim-plug faq / YCM timeout /YCM 國人在國內作的鏡像
管理插件的命令
:PlugInstall install 安裝插件 :PlugUpdate install or update 更新插件 :PlugClean remove plugin not in list 刪除本地無用插件 :PlugUpgrade Upgrade vim-plug itself 升級自己 :PlugStatus Check the status of plugins 查看插件狀態
說明/演示/自定義快捷鍵等, 待處理
注意, 如下 ',' 表明<leader> 1. 能夠本身修改vimrc中配置,決定是否開啓鼠標 set mouse-=a " 鼠標暫不啓用, 鍵盤黨.... set mouse=a " 開啓鼠標 2. 退出vim後,內容顯示在終端屏幕, 能夠用於查看和複製, 若是不須要能夠關掉 好處:誤刪什麼的,若是之前屏幕打開,能夠找回....慘痛的經歷 set t_ti= t_te= 3. 能夠本身修改vimrc決定是否使用方向鍵進行上下左右移動,默認關閉,強迫本身用 hjkl,能夠註解 hjkl 上下左右 map <Left> <Nop> map <Right> <Nop> map <Up> <Nop> map <Down> <Nop> 4. 上排F功能鍵 F1 廢棄這個鍵,防止調出系統幫助 F2 set nu/nonu,行號開關,用於鼠標複製代碼用 F3 set list/nolist,顯示可打印字符開關 F4 set wrap/nowrap,換行開關 F5 set paste/nopaste,粘貼模式paste_mode開關,用於有格式的代碼粘貼 F6 syntax on/off,語法開關,關閉語法能夠加快大文件的展現 F9 tagbar F10 運行當前文件(quickrun) 5. 分屏移動 ctrl + j/k/h/l 進行上下左右窗口跳轉,不須要ctrl+w+jkhl 6. 搜索 <space> 空格,進入搜索狀態 / 同上 ,/ 去除匹配高亮 (交換了#/* 號鍵功能, 更符合直覺, 實際上是離左手更近) # 正向查找光標下的詞 * 反向查找光標下的詞 優化搜索保證結果在屏幕中間 7. tab操做 ctrl+t 新建一個tab (hjkl) ,th 切第1個tab ,tl 切最後一個tab ,tj 下一個tab ,tk 前一個tab ,tn 下一個tab(next) ,tp 前一個tab(previous) ,td 關閉tab ,te tabedit ,tm tabm ,1 切第1個tab ,2 切第2個tab ... ,9 切第9個tab ,0 切最後一個tab ,tt 最近使用兩個tab之間切換 (可修改配置位 ctrl+o, 可是ctrl+o/i爲系統光標相關快捷鍵, 故不採用) 8. buffer操做(不建議, 建議使用ctrlspace插件來操做) [b 前一個buffer ]b 後一個buffer <- 前一個buffer -> 後一個buffer 9. 按鍵修改 Y =y$ 複製到行尾 U =Ctrl-r ,sa select all,全選 gv 選中並高亮最後一次插入的內容 ,v 選中段落 kj 代替<Esc>,不用到角落去按esc了 ,q :q,退出vim ,w :w, 保存當前文件 ctrl+n 相對/絕對行號切換 <enter> normal模式下回車選中當前項 更多細節優化: 1. j/k 對於換行展現移動更友好 2. HL 修改爲 ^$, 更方便在同行移動 3. ; 修改爲 : ,一鍵進入命令行模式,不須要按shift 4. 命令行模式 ctrl+a/e 到開始結尾 5. <和> 代碼縮進後自動再次選中, 方便連續屢次縮進, esc退出 6. 對py文件,保存自動去行尾空白,打開自動加行首代碼 7. 'w!!'強制保存, 即便readonly 8. 去掉錯誤輸入提示 9. 交換\`和', '能跳轉到準確行列位置 10. python/ruby 等, 保存時自動去行尾空白 11. 統一全部分屏打開的操做位v/s[nerdtree/ctrlspace] (特殊ctrlp ctrl+v/x) 12. ',zz' 代碼摺疊toggle 13. python使用"""添加docstring會自動補全三引號 14. Python使用#進行註釋時, 自動縮進