原文:https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/
本節所用命令的幫助入口:
:help netrw-browse :help bufexplorer :help winmanager
[文件瀏覽]
在開發過程中,經常需要查找某個文件。我們前面在介紹path選項時,介紹過使用find命令查找文件的方法。本節介紹vim的文件瀏覽插件。
在vim 7.0以前,文件瀏覽功能由explorer.vim插件提供,在vim 7.0中,這個插件被netrw.vim插件所代替。本文以vim 7.0為例,主要介紹netrw.vim插件。
netrw.vim是vim的標准插件,它已經伴隨vim而發行,不需要安裝。
我們現在試一下vim文件功能,當你使用vim嘗試打開目錄時,vim會自動調用netrw.vim插件打開該目錄(從操作系統的視角來看,目錄其實是一種特殊的文件)。例如,我們在vim中執行命令":e ~/src/vim70/src/",會顯示下面的窗口:
這個窗口類似於文件管理器,你可以創建、刪除、改名文件或目錄;在目錄上按回車時,會進入該目錄;在文件上按回車時,會使用vim打開該文件;可以更改排序方式、排序風格;隱藏目錄或文件(使之不在上述窗口中顯示)等等。
Netrw插件中常用鍵綁定有:
<F1> 顯示幫助 <cr> 如果光標下為目錄,則進入該目錄;如果光標下是文件,則用vim打開該文件 - 返回上級目錄 c 切換vim的當前工作目錄為正在瀏覽的目錄 d 創建目錄 D 刪除文件或目錄 i 切換顯示方式 R 改名文件或目錄 s 選擇排序方式 x 定制瀏覽方式,使用你指定的程序打開該文件
其它常用鍵,諸如使用書簽、隱藏符合條件的文件等,請參閱netrw幫助頁。
上面我們用":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。我沒有使用過這個插件,有興趣你可以試試。
[參考文檔]
- vim幫助文件
- vim中文手冊
本文以創作共用版權協議發布,轉載本文要求遵循“署名-非商業性使用-相同方式共享3.0”的創作共用協議,並以鏈接形式指明本文地址。
本文鏈接地址: https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/
文章的腳注信息由WordPress的wp-posturl插件自動生成