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

原文: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。我沒有使用過這個插件,有興趣你能夠試試。

[參考文檔]

<< 返回vim使用進階: 目錄

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

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

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

相關文章
相關標籤/搜索