gvim 自訂選單
分類
說明
分享如何在 gvim 中自訂選單。
配置
gvim 預設選單從 $VIMRUNTIME/menu.vim
檔案裡讀取,此檔案為選單的功能,如果你想要自訂選單,我會建議在 .gvimrc
上配置,關於如何配置 .gvimrc
請參考相關文章。
Ex 命令模式
:menu 命令群
若要建立新的選單項,請使用 :menu
命令群。它們和 :map
命令群非常類似 (見 :help map-modes
)。
所以 :menu
只能在普通、可視、選擇、操作字元等待模式下可用。
選單路徑
:menu
命令群第一個參數是選單項目名稱。形式為 .
分隔的選單或子選單的路徑。
範例
:menu File.Nohlsearch :noh<CR>
選單右側描述
如果想在選單右側顯示文字,在第一個參數結尾輸入 <TAB>
後輸入要顯示文字。
範例
:menu File.Nohlsearch<TAB>:noh :noh<CR>
選單空格文字
如果想在選單項目或項目描述中使用空格,需要在空格前加上反斜線(\)。
範例
:menu File.Nohlsearch<TAB>nohlsearch\ :noh :noh<CR>
定義新選單
你可以自行新增選單,使用方法直接定義路徑名稱即可。
範例
:menu Others.Nohlsearch :noh<CR>
新增 Nohlsearch 項目在 Others 選單。
選單排序
查看文件 :help menu-priority
你可以給選單指定優先順序。高優先權的選單出現在右邊,數字越高,優先權就越高。
優先權在 :menu
命令之前以數字形式給出,如果沒有或給出優先權為零,則使用 500。
預設排序選單優先權
選單 | 優先權 |
---|---|
File | 10 |
Edit | 20 |
Tools | 40 |
Syntax | 50 |
Buffers | 50 |
Window | 70 |
Help | 9999 |
選單優先權只有在建立新選單時才會用到。一旦已經存在,優先順序不會改變。因此,優先順序只有在選單第一次用到的時候才需要給出。
範例
:80menu Buffer.next :bn<CR>
設定優先權為 80
子選單排序
查看文件 :help sub-menu-priority
同選單排序的機制可以用來定位子選單。用句號分隔優先權,如果不給出某個數字,使用預設值 500。
與選單優先權一樣。一旦已經存在,優先順序不會改變。
範例
:menu 80.500 Buffer.next :bn<CR>
設定 Buffer 優先權為 80,next 優先權為 500。
:menu .900 myMenu.test :echo "text"<CR>
設定 myMenu 優先權為預設值 500,test 優先權為 900。
選單分隔項目
選單項目可以用一個特殊項目分隔,它在項目間插入一些空白。根據不同系統情況,有的顯示為一條線,有的顯示為虛線。這些項目必須以 -
開始和結尾。兩者之間的部分用來給出一個獨一無二的名字。和正常的項目一樣,也可以使用優先權。
範例
:menu Example.item1 :做些事
:menu Example.-Sep- :
:menu Example.item2 :做些別的事
注意分隔符號也需要一個右手邊的表達式。是什麼沒有關係,因為該項目永遠不會選到。簡單點,用單一冒號就可以了。
自訂工具列
工具列為選單下方那一排按鈕,新增工具列跟新增選單類似,指定第一個項目名稱為 ToolBar,如下範例所示。
:amenu icon=C:/Users/I/exit.bmp ToolBar.Exit :qa<CR>
- icon: 按鈕 icon 路徑。
- 項目第一個指定 ToolBar 後面的自訂。
:qa<CR>
: 要執行的指令。
刪除選單
要刪除一個選單項目或整個子選單,使用 unmenu
命令,類似 unmap
命令。
:amenu
的刪除命令為 :aunmenu
。
範例
:unmenu! Edit.Paste
刪除插入和命令列模式下的 Edit 選單的 Paste 項目。
:amenu
:amenu
命令可以用來一次定義除終端模式以外所有模式下的選單項目。
範例
:amenu File.Next :next^M
新增 Next 選單,功能為 :next
。
等價於:
:nmenu File.Next :next^M
:vmenu File.Next ^C:next^M^\^G
:imenu File.Next ^\^O:next^M
:cmenu File.Next ^C:next^M^\^G
:omenu File.Next ^C:next^M^\^G
:tmenu
:tm[enu] {menupath} {rhs}
為選單或工具定義提示,當滑鼠在選項上面就會出現提示。
範例
:tmenu ToolBar.Exit Exit
提示 ToolBar.Exit 為 Exit。
:tunmenu
:tu[nmenu] {menupath}
刪除選單或工具的提示。
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!