原文:https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/php
本節所用命令的幫助入口:程序員
:help netrw-browse :help bufexplorer :help winmanager
[文件瀏覽]vim
在開發過程當中,常常須要查找某個文件。咱們前面在介紹path選項時,介紹過使用find命令查找文件的方法。本節介紹vim的文件瀏覽插件。windows
在vim 7.0之前,文件瀏覽功能由explorer.vim插件提供,在vim 7.0中,這個插件被netrw.vim插件所代替。本文以vim 7.0爲例,主要介紹netrw.vim插件。瀏覽器
netrw.vim是vim的標準插件,它已經伴隨vim而發行,不須要安裝。ssh
咱們如今試一下vim文件功能,當你使用vim嘗試打開目錄時,vim會自動調用netrw.vim插件打開該目錄(從操做系統的視角來看,目錄實際上是一種特殊的文件)。例如,咱們在vim中執行命令":e ~/src/vim70/src/",會顯示下面的窗口:wordpress
這個窗口相似於文件管理器,你能夠建立、刪除、更名文件或目錄;在目錄上按回車時,會進入該目錄;在文件上按回車時,會使用vim打開該文件;能夠更改排序方式、排序風格;隱藏目錄或文件(使之不在上述窗口中顯示)等等。函數
Netrw插件中經常使用鍵綁定有:佈局
<F1> 顯示幫助 <cr> 若是光標下爲目錄,則進入該目錄;若是光標下是文件,則用vim打開該文件 - 返回上級目錄 c 切換vim的當前工做目錄爲正在瀏覽的目錄 d 建立目錄 D 刪除文件或目錄 i 切換顯示方式 R 更名文件或目錄 s 選擇排序方式 x 定製瀏覽方式,使用你指定的程序打開該文件
其它經常使用鍵,諸如使用書籤、隱藏符合條件的文件等,請參閱netrw幫助頁。post
上面咱們用":e ~/src/vim70/src/"的方式打開netrw,咱們還可使用":Explore"等Ex命令來打開文件瀏覽器。個人vimrc中這樣配置:
"""""""""""""""""""""""""""""" " netrw setting """""""""""""""""""""""""""""" let g:netrw_winsize = 30 nmap <silent> <leader>fe :Sexplore!<cr>
這樣,在我輸入",fe"時,就會打開一個垂直分隔的窗口瀏覽當前文件所在的目錄,窗口的寬度爲30。
瀏覽本地文件只是netrw插件的一項小功能,netrw插件最主要的功能是支持遠程文件讀寫。利用該插件,你能夠經過ftp,ssh,http等多種協議來編輯遠程文件,也能夠瀏覽遠程機器的目錄。
在軟件開發過程當中不常使用此功能,本文中再也不介紹。參閱netrw手冊頁獲取更多信息。
[緩衝區瀏覽]
在開發過程當中,常常會打開不少緩衝區,尤爲是使用tag文件在不一樣函數間跳轉時,會不知不覺打開不少文件。要知道本身當前打開了哪些緩衝區,可使用vim的":ls"Ex命令查看。
開發過程當中,又常常須要在不一樣文件間跳轉。我習慣於使用"CTRL-^"來切換文件,這就須要知道文件所在的緩衝區編號。每次都使用":ls"來找緩衝區編號很麻煩,因此我使用BufExplorer插件來顯示緩衝區的信息。
BufExplorer插件在此處下載:http://vim.sourceforge.net/scripts/script.php?script_id=42
下載後,把該文件在~/.vim/目錄中解壓縮,這會在你的~/.vim/plugin和~/.vim/doc目錄中各放入一個文件:
plugin/ bufexplorer.vim - bufexplorer插件 doc/ bufexplorer.txt - bufexplorer幫助文件
注:windows用戶須要把這個插件解壓在你的$vim/vimfiles或$HOME/vimfiles目錄。
使用下面的命令生成幫助標籤(下面的操做在vim中進行):
:helptags ~/.vim/doc
而後,就可使用":help bufexplorer"命令查看BufExplorer的幫助文件了。
BufExplorer功能比較簡單,這裏就不作介紹了。個人vimrc裏這樣設置BufExplorer插件:
"""""""""""""""""""""""""""""" " BufExplorer """""""""""""""""""""""""""""" let g:bufExplorerDefaultHelp=0 " Do not show default help. let g:bufExplorerShowRelativePath=1 " Show relative paths. let g:bufExplorerSortBy='mru' " Sort by most recently used. let g:bufExplorerSplitRight=0 " Split left. let g:bufExplorerSplitVertical=1 " Split vertically. let g:bufExplorerSplitVertSize = 30 " Split width let g:bufExplorerUseCurrentWindow=1 " Open in new window. autocmd BufWinEnter \[Buf\ List\] setl nonumber
BufExplorer已經映射了幾個鍵綁定,例如,使用",bv"就能夠打開一個垂直分割窗口顯示當前的緩衝區。
有一個稱爲minibufexpl.vim的插件,也能夠把緩衝區列表顯示出來,這個插件在此處下載:http://vim.sourceforge.net/scripts/script.php?script_id=159
使用這個插件後,屏幕截圖看起來是這樣,最上面一個窗口就是minibuffer窗口,列出了當前打開的緩衝區:
這個插件沒有幫助文件,參考下載頁上的說明,以及腳本代碼來進行配置。
[winmanager插件]
winmanager插件能夠把上面介紹的Explorer插件(vim 7.0之前的文件瀏覽插件)和BufExplorer插件集成在一塊兒,咱們上篇文章中介紹過的taglist插件也提供了對winmanager插件的支持。
Winmanager插件在這裏下載:http://vim.sourceforge.net/scripts/script.php?script_id=95
下載後,把該文件在~/.vim/目錄中解壓縮,這會把winmanager插件解壓到~/.vim/plugin和~/.vim/doc目錄中:
plugin/winmanager.vim – winmanager插件 plugin/winfileexplorer.vim - 改良的Explorer插件 plugin/wintagexplorer.vim – winmanager提供的tag插件,用處不大 doc/winmanager.txt – 幫助文件
仍然用":helptags ~/.vim/doc"命令來生成幫助標籤,而後就可使用":help winmanager"來查看幫助了。
使用winmanager插件能夠控制各插件在vim窗口中的佈局顯示。個人vimrc中這樣設置:
"""""""""""""""""""""""""""""" " winManager setting """""""""""""""""""""""""""""" let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList" let g:winManagerWidth = 30 let g:defaultExplorer = 0 nmap <C-W><C-F> :FirstExplorerWindow<cr> nmap <C-W><C-B> :BottomExplorerWindow<cr> nmap <silent> <leader>wm :WMToggle<cr>
g:winManagerWindowLayout變量的值定義winmanager的窗口布局,使用上面的設置,咱們的窗口布局看起來是這樣的:
左邊有兩個窗口,上面的是BufExplorer窗口,下面是taglist窗口。FileExplorer窗口和BufExplorer共用一個窗口,在BufExplorer窗口中使用"CTRL-N"能夠切換到FileExplorer窗口,再使用一次則又切換回BufExplorer窗口。也就是說,在變量g:winManagerWindowLayout中,使用","分隔的插件,在同一個窗口中顯示,使用"CTRL-N"在不一樣插件間切換;使用"|"分隔的插件,則在另一個窗口中顯示。
在屏幕右邊的窗口則是主編輯區。
在上面的vimrc設置中,還定義了三個鍵映射,分別用於跳到左上窗口、左下窗口,以及顯示/關閉winmanager窗口。
注:安裝後,若是未設置g:winManagerWindowLayout變量,winmanager插件須要與BufExplorer插件一塊兒才能使用。因此須要下載BufExplorer。
在http://vim.sourceforge.net/scripts/script.php?script_id=1440有一個winmanager插件的修改版本,若是在FileExplorer中打開文件時,它會使用與該文件相關聯的程序來打開該文件,而不是使用vim。我沒有使用過這個插件,有興趣你能夠試試。
[參考文檔]
本文以創做共用版權協議發佈,轉載本文要求遵循「署名-非商業性使用-相同方式共享3.0」的創做共用協議,並以連接形式指明本文地址。
本文連接地址: https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/
文章的腳註信息由WordPress的wp-posturl插件自動生成