linux vim(gvim) 多标签页,Vim 的标签页功能
雖然一直在使用 Vim 寫程序與文檔,但是一直沒有深究其標簽頁 (Tab Page) 功能的具體使用方法。現在開始重視這個問題,畢竟使用 Vim 的時間越來越少了,當然這只是針對我的所有生命而言
。
1 建立新的標簽頁
使用 Vim 在當前工作目錄中新建或打開某一文件并開啟新標簽頁顯示文件內容,操作如下:
:tabnew filename
使用 tabf 指令基于正則表達式遞歸遍歷當前工作目錄查找名稱匹配的文件并為其建立新標簽頁,用法如下:
:tabf filename_re
上述操作的前提是將 Vim 的工作目錄定位到所期望的位置,否則所修改的文件可能會陰差陽錯存儲到你不知道的某一目錄下。在終端里使用 Vim 打開某一文件時,會默認將當前目錄作為 Vim 的工作目錄,但是在使用 gvim 時,如果從桌面環境提供的文件管理器中直接打開某一文本文件,gvim 的工作目錄默認是 $HOME。可能你與我一樣,喜歡自動將 Vim 工作目錄遷移到所打開文本文件的目錄下,解決方法是編輯 $HOME/.vimrc 文件,添加以下代碼:
"Change work dir to current dir
autocmd BufEnter * cd %:p:h
2 gvim 的 remote-tab 功能
gvim 提供了 remote-tab 的功能,可以實現在 gvim 打開文件的同時為其建立標簽頁。這里,“remote” 的概念是指 gvim 好像一個當前正在運行的服務器程序,在終端下使用 "gvim --remote-tab-silent filename" 這樣的命令時,會將“打開文檔并為其建立標簽頁”的指令傳遞于當前正在運行的 gvim 進程,gvim 進程便會乖乖地執行這一命令。該功能所能帶來的好處就是只需要開一個 gvim 進程,所有待編輯的文件都以標簽頁的形式出現在該 gvim 進程中,這樣便于隸屬于某一項目的多分文件的編輯與管理。
先把你正在運行的所有 gvim 進程都關掉,然后依次執行以下的命令,就可以切身體驗 remote-tab 的功用了。
$ gvim? ? a.txt
$ gvim? ? --remote-tab-silent? ? b.txt
$ gvim? ? --remote-tab-silent? ? c.txt? ? d.txt? ? e.txt
實際應用中,可使用 Shell 提供的別名功能,對 “gvim --remote-tab-silent” 這樣的長命令行進行友好簡化,做法是編輯 $HOME/.bashrc 文件,向其中添加:
alias vi='gvim --remote-tab-silent'
具體使用什么別名,要依據個人喜好。我之所以使用 "vi" 作為 "gvim --remote-tab-silent" 命令的別名,是因為我不大常用 vi 這個命令,而且在許多 linux 發行版中,"vi" 默認連接到 "vim" 的。
現在使用 vi 別名來實現前面那個例子:
$ vi? ? a.txt? b.txt? c.txt? d.txt? e.txt
以前我習慣使用 "vim" 在終端開啟 vim,使用 "gvim" 開啟 vim GUI,唯獨不大用 "vi" 這個命令,但是從現在開始也許我用的最多的是 vi 指令了。
3 在標簽頁之間跳來跳去
使用 ":tabp" 與 ":tabn" 可分別實現在一組標簽頁中向前或向后切換當前標簽頁,但是這樣太繁瑣了,為了將當前標簽頁切換到相鄰的標簽頁需要摁 7 次鍵。利用 Vim 提供的鍵映射功能,可將 ":tabp" 與 ":tabn" 命令映射到你喜歡的快捷鍵上。我熱衷于將 ":tabp" 映射為 "Shift + Left" 組合鍵,將 ":tabn" 映射為 "Shift + Right" 組合鍵,做法是編輯 $HOME/.vimrc,添加:
" shift tab pages
map :tabp
map :tabn
4 標簽頁的排序
有時打開多個標簽頁,它們在標簽頁欄中的排列次序并不是我們所希望的,需要手動去調整。許多編輯器支持使用鼠標拖放來調整標簽頁的次序,但 vim 不可以,目前只能借助標簽頁編號機制并采用命令模式來解決標簽頁次序調整問題。
在標簽頁欄中,每一標簽頁都是有編號的,從 0 開始,由左至右依次遞增 1。
使用 ':tabm n' 命令可以將當前標簽所對應的編號調整為 'n',即將當前標簽頁的位置調整到編號 'n' 所對應的標簽頁位置。
5 優化標簽頁名的顯示
Vim 的標簽欄中,各標簽頁的名稱默認是對應文件所在路徑全稱的簡寫,譬如 /usr/share/doc/test.txt 文件所對應的標簽頁名默認是 /u/s/d/test.txt,這樣的標簽頁名看上去有些詭異。我覺得沒有必要顯示標簽文件的路徑名,因為在大多數情況下,用戶是非常清楚所編輯文件的位置,即使一時忘記,也可以使用 ':f' 命令查看文件名。特別是在 gvim 里,鼠標往標簽頁名那里懸掛一下,就會出現一個很小的提示窗口,其中顯示了標簽文件的路徑全稱。
下面是我對 Vim 標簽頁的 hack,在標簽頁欄中去除當前所編輯文件的路徑信息,只保留文件名。
function ShortTabLabel ()
let bufnrlist = tabpagebuflist (v:lnum)
let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1])
let filename = fnamemodify (label, ':t')
return filename
endfunction
set guitablabel=%{ShortTabLabel()}
6 標簽頁與會話
Vim 可以將當前的工作狀態存儲為會話文件,通過讀取該會話文件就可以將 vim 工作環境恢復到你上次退出之前的編輯環境。對于當前所開啟的標簽頁組,在下一次編輯時,可以利用 vim 的會話功能將它們一并開啟,快速復原到上一次工作狀態,這樣就可以在 vim 中模擬出 IDE 所特有的項目管理功能。
要恢復上次的編輯環境,我們需要保存會話 (session) 信息與 viminfo 信息:
會話信息中保存了所有窗口的視圖,外加全局設置;
viminfo 信息中保存了命令行歷史、搜索字符串歷史、輸入行歷史、非空的寄存器內容、文件的位置標記、最近搜索/替換的模式、緩沖區列表、全局變量等信息。
對于 vim 會話功能的使用,具體細節請參閱 easwy 的一篇文章《Vim 會話與 info》。為了更方便地使用 vim 會話功能,推薦使用 sessionman.vim插件。
總結
以上是生活随笔為你收集整理的linux vim(gvim) 多标签页,Vim 的标签页功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux点阵ascii像素字体,点阵字
- 下一篇: amazon linux 安装nginx