VIM (Unix及類Unix系統文本編輯器) Vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是開源軟體。 Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。1999 年Emacs被選為Linuxworl ...
VIM (Unix及類Unix系統文本編輯器)
Vim是一個類似於Vi的著名的功能強大、高度可定製的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是開源軟體。
Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。1999 年Emacs被選為Linuxworld文本編輯分類的優勝者,Vim屈居第二。但在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器大獎,又將Emacs推至二線, 總的來看, Vim和Emacs在文本編輯方面都是非常優秀的。
前言:
系統原生的Vim文本編輯器功能單一,作者介紹一種K-vim高級配置,具有代碼補全等多項功能。本文是在原作者的基礎上進行二次改進,原文地址:https://github.com/wklken/k-vim。
正文:
安裝步驟
註意:有些系統需要執行:sudo apt-get install vim #安裝Vim編輯器後才能進行安裝
1. clone 到本地
git clone https://github.com/wklken/k-vim.git
註意:如果未安裝git,需要執行:sudo apt-get install git #安裝git後才能進行安裝,下載目錄就是當前目錄。
2. 安裝依賴包
2.1 系統依賴 # ctags, ag(the_silver_searcher)
# 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
2.2 使用Python
sudo pip install flake8 yapf
註意:執行上面命令需要提前安裝pip支持:
sudo apt-get update
sudo apt-get upgrade
# 安裝Pip
sudo apt-get install python-pip
# 檢查 pip 是否安裝成功
pip -V
2.3 如果使用Javascript(不需要的跳過)
# 安裝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
3. 安裝
進入目錄, 執行安裝
# 註意原先裝過的童鞋, 重裝時,不要到~/.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使用#進行註釋時, 自動縮進