【利器】Vim配置成IDE方案以及使用
“工欲善其事必先利其器”。
在之前就一直打算把vim作為自己的編輯器來工作的,但是由於vim的配置比較複雜,自己也還不知道自己需要哪些功能,並且公司的辦公機器是windows系統,linux開發機器則不方便裝自己的軟體,所以暫時用的是windows下的eclipse。
eclipse用了3個月,也大概知道自己在工作中需要哪些功能了。總的來說,eclipse的功能很全面,基本夠我用了,但是個人比較喜歡vim的各種操作(比如刪除一行用dd,上下快速移動n行等等),雖然裝了eclipse的vim外掛,但是用起來有很多bug,所以決定還是用回純正的vim。
目前的打算是,在windows機器上裝一個linux的虛擬機器,虛擬機器和宿主機通過共享資料夾來同步程式碼(雙向),宿主機跟開發機則使用同步工具進行單向同步(不使用雙向同步是因為開發機上的程式碼同時用於編譯,不想把編譯產生的檔案給同步到宿主機上)。之後所有的程式碼開發在虛擬機器上進行(最好能有雙螢幕,一個螢幕給linux虛擬機器,一個螢幕給windows宿主機)。
vim配置下載以及說明:
https://github.com/jiangeZh/vim-ide
下面是我常用的功能說明以及一些需要自己另外配置的內容:
1.Buffer瀏覽與操作——F8
這裡列出了目前開啟的檔案,可通過這個頁面來切換檔案。
按d鍵可刪除buffer。
2.檔案瀏覽器——F2
由於檔案瀏覽器不是經常需要用到,所以預設是隱藏的,開啟檔案後該欄目會消失,如果需要固定該欄目,只需刪除家目錄下 .vimrc中的let NERDTreeQuitOnOpen=1這行,之後在nerdtree裡開啟檔案後nerdtree就不會消失了。
3.tag瀏覽器——F3
tag瀏覽器顯示了當前檔案下的函式,變數,typedefs等等。
可切換到右邊視窗並快速跳轉到指定的函式。
切換視窗命令如下:
“ctrl-h”: move cursor to left window in vim
“ctrl-j”: move cursor to down window in vim
“ctrl-k”: move cursor to up window in vim
“ctrl-l”: move cursor to right window in vim
4.標頭檔案與實現檔案切換——F4
通過F4可快速在標頭檔案和實現檔案之間切換,注意前提是兩個檔案都已經開啟了。
5.更新索引——F5
F5快捷鍵會把ctags,cscope兩個索引都更新了。
6.高亮檔案中所有當前單詞——F7
這個功能十分有用,比如你想看看這個變數在哪裡使用了,可以之間高亮,不需要動用搜尋功能:
7.是否將tab擴充套件為space——F9
tab的使用容易使得程式碼排版比較亂,因為有的tab是4個空格的長度,有的是8個空格的長度。將tab擴充套件位space,即可避免這個問題~我們的配置預設是擴充套件的。
8.改變tab與space的對應關係——F10
對一個tab對應4個space還是8個space進行配置。
9.單檔案內查詢與替換
查詢
/love 從游標位置向前搜尋關鍵詞 love
?love 從游標位置向後搜尋關鍵詞 love
正常模式下使用 n 或 N 命令執行 向前查詢 或 向後查詢 下一個關鍵詞
:set ic 忽略大小寫命令,ic 為 ignore case 縮寫
:set is 邊輸入邊顯示匹配結果,is 是 incsearch 命令的縮寫
:set hls 高亮顯示匹配結果,hls 為 highlight search 縮寫
可將上述設定放入.vimrc 檔案中,設為預設搜尋設定
:set noic nois nohls 將取消上述設定
:noh 暫時取消高亮顯示,不會影響下次高亮顯示匹配結果
替換
單檔案中使用 :s 命令進行替換操作
幾個常用的標記 :
% 所有行 g 單行內所有匹配項 i 忽略大小寫 c 確認是否替換
關鍵詞 old 替換為 new
:s/old/new 將游標所在行第一個 old 替換為 new
:s/old/new/g 將游標所在行所有 old 替換為 new
:%s/old/new/gc 全文執行替換,詢問是否替換
:3,10s/old/new/gic 將第3行到第10行內容替換,忽略大小寫,且每個詢問是否替換
g i c 可自由組合
10.多檔案內查詢
vim 多檔案查詢方法
正常模式下使用 :vim 或 :vimgrep 命令執行多檔案搜尋
搜尋的時候涉及到選取檔案問題,這裡主要用到 * 作為萬用字元,
** 表示資料夾及子資料夾下的所有檔案
搜尋 love 關鍵詞
:vim/love/* #當前資料夾下的所有檔案
:vim/love/** #當前資料夾及子目錄下的所有檔案
:vim/love/**/*.php #當前資料夾及子目錄下的所有 php 檔案
:vim/love/*.php aa/**/*.php #當前資料夾下的 php 檔案和 aa 目錄及子目錄下的 php 檔案
使用 * 和 可任意組合出想要搜尋的檔案
:cw 檢視搜尋結果
:ccl 關閉搜尋結果
:cn 查詢下一個
:cp 查詢上一個
cscope 多檔案查詢方法
:cs find s word
在專案中查詢變數或者函式名word
:cs find t word
在專案中查詢文字word
11.快速對齊
“=”: 對齊所選的程式碼
12.快速註釋與取消註釋
需要先使用ctrl-v選擇。
“,”: comment selected code
“.”: uncomment selected code
13.配置相對行號
在.vimrc中新增:
set relativenumber
即可顯示相對行號,為什麼要用相對的呢?因為在vim中往上或者往下移動n行的操作比較多,因此使用相對行號十分方便,不需要我們去計算!
而且頁面右下角顯示了絕對行號和列號,因此這樣子我們可以同時看到絕對行號和相對行號,方便操作。
14.撤銷與重做
u是撤銷,ctrl-r是重做。
15.複製貼上
先按v或shift-v,選中一些內容,按y複製,把游標移動到想要貼上的位置,按p。
16.選中一個單詞
viw:它的作用是選取一個單詞(word),無論游標在這個單詞的哪個位置都能選中整個單詞。
17.臨時退出vim
ctrl-z 臨時退出vim到後臺,退出時會得到一個任務編號:
通過 fg %任務編號 恢復到前臺(fg是frontground的意思,同理有bg,background為後臺執行)。
18.語法高亮
在你的 ~/.vimrc 檔案中增加下面幾句話:
syntax enable
syntax on
再重新啟動vim。
如果你不喜歡這個配色方案你可以在”編輯->配色方案”(gvim)中選擇一個你滿意的配色方案,比如desert,然後在~/.vimrc檔案中增加下面這句:
colorscheme desert
19.突出當前行
突出當前行設定:
set cursorline
以上設定之後當前行會有下劃線。
如果想要更豐富的色彩,可以如下設定:
hi CursorLine cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE
ctermbg是整行的背景,ctermfg是整行的前景。
guibg和guifg則是下劃線的背景和前景。
(我目前只有下劃線,色彩方案沒有配置成功TAT)
20.標頭檔案,變數,函式定義跳轉
標頭檔案
游標在include的標頭檔案上時,使用gf命令可跳轉到該標頭檔案內,返回使用命令 ctrl-o 。
需要注意的是,gf命令會到path這個變數下面查詢,需要在.vimrc上設定。比如我們的專案在 /home/jiange/MyProj 下,則新增如下配置:
set path=/home/jiange/MyProj/**, #我們的專案
set path+=/usr/include/** #庫標頭檔案
變數與函式
游標選中要跳轉的單詞,ctrl-] 即可顯示出現該tag的位置,輸入相應數字可跳轉過去。
如果想跳轉回來,則使用 ctrl-t 。
如果跳轉失敗,嘗試按F5來更新下索引,再重試。
21.去除多餘的^M
windows和unix的換行符號不一樣,需要轉換:
$ dos2unix filename
22.提示函式原型
echofunc可以在命令列中提示當前輸入函式的原型。
echofunc下載地址:http://www.vim.org/scripts/script.php?script_id=1735
下載完成後,把echofunc.vim檔案放到 ~/.vim/plugin資料夾中。
當你在vim插入(insert)模式下緊接著函式名後輸入一個”(“的時候, 這個函式的宣告就會自動顯示在命令列中。如果這個函式有多個宣告, 則可以通過按鍵”Alt+-“和”Alt+=”向前和向後翻頁, 這個兩個鍵可以通過設定g:EchoFuncKeyNext和g:EchoFuncKeyPrev引數來修改。
這個外掛需要tags檔案的支援, 並且在建立tags檔案的時候要加選項”–fields=+lS”(OmniCppComplete建立的tag檔案也能用), 整個建立tags檔案的命令如下:
$ ctags -R --fields=+lS
以上在我們的配置檔案中是F5按鍵的配置處。
其他外掛說明詳見echofunc.vim
如果你在編譯vim時加上了”+balloon_eval”特性,那麼當你把滑鼠放在函式名上的時候會有一個tip視窗彈出, 該視窗中也會有函式的宣告。
23.程式碼摺疊
摺疊fold用於把緩衝區內某一範圍內的文字行顯示為螢幕上的一行。
那些文字仍然在緩衝區內而沒有改變。受到摺疊影響的只是文字行顯示的方式。
摺疊的好處是,通過把多行的一節摺疊成帶有摺疊提示的一行,會使你更好地瞭解文字的巨集觀結構。
摺疊方式foldmethod
vim提供以下6種方法來選定摺疊方式:
manual 手工定義摺疊
indent 更多的縮排表示更高階別的摺疊
expr 用表示式來定義摺疊
syntax 用語法高亮來定義摺疊
diff 對沒有更改的文字進行摺疊
marker 對文中的標誌摺疊
摺疊級別foldlevel
‘foldlevel’ 是個數值選項:數字越大則開啟的摺疊更多。
當 ‘foldlevel’ 為 0 時,所有的摺疊關閉。
當 ‘foldlevel’ 為正數時,一些摺疊關閉。
當 ‘foldlevel’ 很大時,所有的摺疊開啟。
摺疊欄foldcolumn
‘foldcolumn’ 是個數字,它設定了在視窗的邊上表示摺疊的欄的寬度。當為0時,沒有摺疊欄。最大是12。
一個開啟的摺疊由一欄來表示,頂端是 ‘-‘,其下方是 ‘|’。這欄在摺疊結束的地方結束。當摺疊巢狀時,巢狀的摺疊出現在被包含的摺疊右方一個字元位置。
一個關閉的摺疊由 ‘+’ 表示。
當摺疊欄太窄而不能顯示所有摺疊時,顯示一數字來表示巢狀的級別。
在摺疊欄點選滑鼠,可以開啟和關閉摺疊:
- 點選 ‘+’ 開啟在這行的關閉摺疊
- 在任何其他非空字元上點選,關閉這行上的開啟摺疊
在vim配置檔案.vimrc中加入如下的配置:
"--fold setting--
set foldmethod=syntax " 用語法高亮來定義摺疊
set foldlevel=100 " 啟動vim時不要自動摺疊程式碼
set foldcolumn=5 " 設定摺疊欄寬度
常用命令
za 開啟/關閉在游標下的摺疊
zA 迴圈地開啟/關閉游標下的摺疊
zo 開啟 (open) 在游標下的摺疊
zO 迴圈開啟 (Open) 游標下的摺疊
zc 關閉 (close) 在游標下的摺疊
zC 迴圈關閉 (Close) 在游標下的所有摺疊
zM 關閉所有摺疊
zR 開啟所有的摺疊
幫助文件
:help usr_28.txt
:help fold.txt
24.檔案編碼檢測與轉換
雖然小組的程式碼明確規範使用utf-8,但是有一些老程式碼或者同事用的編輯器使用的是gbk編碼,一時沒法轉過來,所以常常會出現亂碼問題。使用eclipse的時候,裝了一個外掛,可以推測當前檔案編碼,以及便捷地進行編碼格式的轉換,如果vim也有類似的功能,那麼編碼問題就迎刃而解了!
Vim外掛FencView-自動識別編碼
下載地址:
http://www.vim.org/scripts/script.php?script_id=1735
把外掛放到plugin目錄,然後自動生效,命令模式輸入:
FencAutoDetect :自動識別檔案編碼
FencView:開啟一個編碼列表視窗,使用者選擇編碼reload檔案
在vim中:F然後直接tab按鍵就可以選了,不用全部輸入。
首先輸入:FencAutoDectect自動檢測,然後就可以:FencView檢視自動檢測到的字符集是什麼了。
重複輸入:FencView 視窗在’關閉/開啟’之間切換。
高亮顯示的字符集就是當前檔案使用的字符集了。
非常有用的選項:
let g:fencview_autodetect = 1 #開啟檔案時自動識別編碼
let g:fencview_checklines = 10 #檢查前後10行來判斷編碼
還可以指定識別編碼的工具–$FENCVIEW_TELLENC。
如果mount的iso資料夾裡面出現了亂碼,判斷iso的編碼:
$ ls /mnt/iso > ~/gliethtp
$ vim ~/gliethttp
然後
:F輸入tab按鍵
:FencAutoDectect
:FencView
就可以看到iso的編碼方案了。
對於vim開啟檔案時如何自動識別,可以有如下2個方法:
1.在.vimrc中加入如下一行
set fileencodings=utf-8,gb2312,ucs-bom,euc-cn,euc-tw,gb18030,gbk,cp936
2.在.vimrc中加入上面安裝的fencview外掛指令
let g:fencview_autodetect=1
let g:fencview_auto_patterns='*'
對於方法2因為每次開啟都將執行檢測運算,所以效率比較低,使用方法1效率最高的(推薦)。
當方法1不能識別時,可以使用:FencAutoDectect自動檢測,然後追加encoding到方法1中。
到此,我們的vim的功能基本夠用了~接下來可以美美地敲程式碼了,純鍵盤操作,不再需要像eclipse那樣一會鍵盤一會滑鼠!
相關文章
- 將 Vim 配置成 Python IDEPythonIDE
- 如何把 VIM 整成 IDEIDE
- 像 IDE 一樣使用 VimIDE
- Vimrc配置以及Vim的常用操作
- vim 學習利器
- [IDE工具篇]Vim命令合集IDE
- 誰說Vim不是IDE?(一)IDE
- Vim配置、外掛和使用技巧
- 我為什麼會選擇Vim來開發Go專案及Vim IDE安裝配置和操作GoIDE
- 將 Vim 打造成 python IDEPythonIDE
- 使用Vundle管理配置Vim的外掛
- vim配置思路
- Mac 配置 vimMac
- 1.go環境安裝,IDE配置以及依賴管理GoIDE
- 把VSCode配置成C/C++開發IDEVSCodeC++IDE
- 手把手教你把Vim改裝成一個IDE程式設計環境(圖文)IDE程式設計
- Vim安裝使用以及一些避坑指南
- Vim 配置入門
- vim配置檔案
- 將 VIM 打造成 go 語言的 ideGoIDE
- Linux Vim編輯的的配置和使用Linux
- c++IDE配置C++IDE
- 配置vim外掛遇到youcompleteme外掛問題解決方案
- react-redux 學習以及模組化配置方案ReactRedux
- Vim 使用
- vim使用
- 如何將 Vim 打造成一個成熟的 IDEIDE
- 如何使用 Ansible 配置 Vim並安裝外掛
- vim安裝與配置
- Ubuntu下vim的配置Ubuntu
- vim配置vimrc詳解
- vim配置及基本用法
- Arduino IDE 環境配置UIIDE
- minikube配置代理:解決方案以及解決思路
- 7款優秀Vim外掛幫你打造完美IDEIDE
- 保姆級教程!將 Vim 打造一個 IDE (Python 篇)IDEPython
- Make Vim as Your Bash-IDE Using bash-support PluginIDEPlugin
- vim-配置教程+原始碼原始碼