vi/vim使用進階: 文件瀏覽和緩沖區瀏覽


原文: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使用進階: 目錄

本文以創作共用版權協議發布,轉載本文要求遵循“署名-非商業性使用-相同方式共享3.0”的創作共用協議,並以鏈接形式指明本文地址。

本文鏈接地址: https://blog.easwy.com/archives/advanced-vim-skills-netrw-bufexplorer-winmanager-plugin/

文章的腳注信息由WordPress的wp-posturl插件自動生成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM