Gui

Nvim 的 :help 頁面,是使用 tree-sitter-vimdoc 解析器,從 原始碼 產生 而來。


Nvim 圖形使用者介面 GUI
任何支援 Nvim ui-protocol 的用戶端都可以作為 Nvim 的 UI。而且多個 UI 可以連線到同一個 Nvim 實例!「UI」和「GUI」這兩個詞經常可以互換使用,因為所有 Nvim UI 用戶端都具有相同的潛在功能;「TUI」指的是輸出到您的終端的 UI 用戶端,而「GUI」則直接輸出到 OS 圖形系統。
除非另有說明,否則此文件描述了 TUI 和 GUI 都可用的 UI 功能(假設 UI 支援給定的功能)。有關終端 UI 的特定注意事項,請參閱 TUI。「gui-」前綴的幫助標籤是指 UI 功能,而「ui-」前綴的幫助標籤是指 ui-protocol
Nvim 提供了一個預設的內建 UI (即 TUI),但您可以使用許多其他 (第三方) GUI 來替代。
ginit.vim gui-init gvimrc $MYGVIMRC 對於 GUI 特定的設定,Nvim 提供了 UIEnter 事件。這會在其他 初始化 之後,或任何 UI 附加時發生 (多個 UI 可以連接到任何 Nvim 實例)。
範例:這會將 "g:gui" 設定為 UI "rgb" 欄位的值
:autocmd UIEnter * let g:gui = filter(nvim_list_uis(),{k,v-> v.chan==v:event.chan})[0].rgb
:winp :winpos E188 :winp[os] 顯示 GUI vim 視窗左上角的目前位置 (以像素為單位)。並非所有版本都有效。另請參閱 getwinpos()getwinposx()getwinposy()
:winp[os] {X} {Y} E466
將 GUI vim 視窗放置在給定的 {X}{Y} 座標。這些座標應指定視窗左上角的位置 (以像素為單位)。當 GUI 視窗尚未開啟時,這些值會被記住,直到視窗開啟為止。位置會進行調整,使視窗盡可能符合螢幕大小。
:wi :win :winsize E465 :win[size] {width} {height} 將視窗高度設定為 {width} 乘以 {height} 個字元。已過時,請使用 ":set lines=11 columns=22"。
有垂直捲軸和水平捲軸。您可以使用 'guioptions' 選項來設定要顯示哪些捲軸。
介面看起來像這樣 (使用 :set guioptions=mlrb)
                      +------------------------------+ `
                      | File  Edit                 Help | <- Menu bar (m) `
                      +-+--------------------------+-+ `
                      |^|                            |^| `
                      |#| Text area.                    |#| `
                      | |                            | | `
                      |v|__________________________|v| `
Normal status line -> |-+ File.c               5,2  +-| `
between Vim windows   |^|""""""""""""""""""""""""""|^| `
                      | |                            | | `
                      | | Another file buffer.     | | `
                      | |                            | | `
                      |#|                            |#| `
Left scrollbar (l) -> |#|                            |#| <- Right `
                      |#|                            |#|    scrollbar (r) `
                      | |                            | | `
                      |v|                            |v| `
                      +-+--------------------------+-+ `
                      | |< ####                   >| | <- Bottom `
                      +-+--------------------------+-+    scrollbar (b) `
任何捲軸或選單元件都可以透過不在 'guioptions' 字串中放入適當的字母來關閉。只有在設定 'nowrap' 時,底部捲軸才有用。

垂直捲軸 gui-vert-scroll

每個 Vim 視窗旁邊都有一個捲軸,可以上下滾動以在該緩衝區中移動文字。捲軸滑塊的大小表示可以在視窗中看到的緩衝區部分。當捲軸完全拖曳到最下方時,檔案的最後一行將會出現在視窗的頂部。
如果視窗被縮小為零高度 (透過另一個視窗的擴展),其捲軸將會消失。當視窗恢復時,捲軸會重新出現。
如果視窗垂直分割,當它是目前視窗時,以及當取目前視窗的中間並繪製垂直線時,此線會穿過視窗,則該視窗會取得捲軸。當兩側都有捲軸時,如果目前視窗的中間位於左半邊,則右側捲軸欄將包含最右側視窗的捲軸。另一側也會發生相同的情況。

水平捲軸 gui-horiz-scroll

'wrap' 選項關閉時,可以使用水平捲軸 (位於 Vim GUI 的底部) 來橫向捲動文字。捲軸滑塊的大小,會讓最長的可見行文字可以盡可能地向左和向右捲動。游標會在必要時移動,它必須保持在可見字元上 (除非設定 'virtualedit')。
計算最長可見行的長度需要相當多的計算,而且每次發生變更時都必須執行。如果這需要太多時間,或者您不喜歡游標跳到另一行,請在 'guioptions' 中包含 'h' 標誌。然後捲動會受到目前游標行文字的限制。
您可以將一個或多個檔案拖放到 Vim 視窗中,它們會像使用 :drop 命令一樣開啟。
如果您在執行此操作時按住 Shift 鍵,Vim 會變更為第一個拖放檔案的目錄。如果您按住 Ctrl,Vim 將始終為該檔案分割一個新視窗。否則,只有在目前緩衝區已變更時才會執行此操作。
您也可以將目錄拖放到 Vim 上。這會為該目錄啟動 explorer 外掛程式 (假設已啟用,否則您會收到錯誤訊息)。按住 Shift 鍵以改為變更為該目錄。
如果 Vim 剛好正在編輯命令列,則拖放檔案和目錄的名稱將會插入到游標處。這可讓您將這些名稱與任何 Ex 命令搭配使用。特殊字元 (空格、Tab、雙引號和 "|";在非 MS-Windows 系統上為反斜線) 將會逸出。

選單 menus

如需簡介,請參閱使用者手冊中的 usr_42.txt
使用選單 using-menus
基本上,選單的使用方式與映射類似。您可以定義自己的選單,數量不限。長時間使用 Vim 的使用者不會經常使用選單。但是,新增您自己的選單和選單項是關鍵所在。它們對於您不記得金鑰順序的事情最有用。
若要以不同的語言建立選單,請參閱 :menutrans
menu.vim
預設選單是從檔案 "$VIMRUNTIME/menu.vim" 中讀取。有關路徑的來源,請參閱 $VIMRUNTIME。您可以設定自己的選單。從預設設定開始是一個好主意。您可以新增更多項目,或者,如果您完全不喜歡預設值,請從移除所有選單開始 :unmenu-all。您也可以透過將此行新增至您的 vimrc 檔案 (不是您的 gvimrc 檔案!) 來避免載入預設選單。
:let did_install_default_menus = 1
如果您也想避免 Syntax 選單
:let did_install_syntax_menu = 1
Syntax 選單中的第一個項目可用於在選單中顯示所有可用的檔案類型 (可能需要一些時間才能載入)。如果您希望在啟動時已經存在所有檔案類型,請新增
:let do_syntax_sel_menu = 1
請注意,當執行 :syntax on:filetype on 時,或在您的 .vimrc 檔案被載入後,會來源 menu.vim。這表示 'encoding' 選項和訊息的語言 (:language messages) 必須在此之前設定好 (如果您想要變更它們)。
console-menus
雖然此文件位於 GUI 區段中,但您實際上也可以在主控台模式中使用選單。然後您必須明確載入 menu.vim,預設情況下不會這麼做。您可以使用 :emenu 命令和具有 'wildmenu' 的命令列完成功能,來存取選單項目,幾乎就像真實的選單系統一樣。若要執行此操作,請將這些命令放入您的 vimrc 檔案中
:source $VIMRUNTIME/menu.vim
:set wildmenu
:set cpo-=<
:set wcm=<C-Z>
:map <F4> :emenu <C-Z>
按下 <F4> 會啟動選單。您現在可以使用游標鍵來選取選單項目。按下 <Enter> 來執行它。如果您想要取消,請按下 <Esc>
建立新選單 creating-menus
:me :menu :noreme :noremenu E330 E327 E331 E336 E333 E328 E329 E337 E792 若要建立新的選單項目,請使用 ":menu" 命令。它們大多類似於 ":map" 命令集 (請參閱 map-modes),但第一個引數是選單項目名稱,以選單和子選單的路徑形式提供,以 '.' 分隔,例如
:menu File.Save  :w<CR>
:inoremenu File.Save  <C-O>:w<CR>
:menu Edit.Big\ Changes.Delete\ All\ Spaces  :%s/[ ^I]//g<CR>
最後一個命令會在選單列中建立一個名為 "Edit" 的新項目,按住滑鼠按鈕會彈出一個包含項目 "Big Changes" 的選單,這是包含項目 "Delete All Spaces" 的子選單,選取時會執行該操作。
若要為終端機模式建立選單,請使用 :tlmenu 而不是 :tmenu,與金鑰映射 (:tmap) 不同。這是因為 :tmenu 已用於定義選單的工具提示。請參閱 terminal-input
選單名稱中的特殊字元
menu-shortcut
& 下一個字元是快速鍵。請確保每個快速鍵在 (子) 選單中只使用一次。如果您想要在選單名稱中插入文字 "&",請使用 "&&"。 menu-text
<Tab> 將選單名稱與右對齊文字分開。這可以用來顯示等效的輸入命令。文字 "<Tab>" 可以在此處方便使用。如果您使用真正的 Tab,請別忘記在其前面加上反斜線!範例
:amenu &File.&Open<Tab>:e  :browse e<CR>
[字面翻譯] 使用快捷鍵「F」(同時按住 <Alt> 鍵),然後按下「O」,即可使用此選單。第二部分顯示為「Open :e」。「:e」靠右對齊,而「O」下方有底線,表示它是快捷鍵。
:am :amenu :an :anoremenu 「:amenu」指令可用於一次定義所有模式(終端模式除外)的選單項目。為了使指令正常運作,某些模式會自動插入一個字元
模式 插入 附加
一般模式 無 無 視覺模式 <C-C> <C-\><C-G> 插入模式 <C-\><C-O> 命令列模式 <C-C> <C-\><C-G> 待操作模式 <C-C> <C-\><C-G>
範例
:amenu File.Next        :next^M
等同於
: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
注意:在插入模式下,由於使用了 CTRL-O,此方法僅適用於單個一般模式指令。如果您有兩個或多個指令,則需要使用「:imenu」指令。對於在任何模式下插入文字,您可以使用表達式暫存器
:amenu Insert.foobar   "='foobar'<CR>P
特殊文字 <Cmd> 表示開始一個「指令選單」,它會直接執行指令,而不會變更模式。當您可能會使用「:...<CR>」時,您可以改用「<Cmd>...<CR>」。請參閱 <Cmd> 以取得更多資訊。範例
anoremenu File.Next <Cmd>next<CR>
請注意,命令列模式中的 <Esc> 會像在映射中一樣執行指令。這是 Vi 相容的。請使用 CTRL-C 來離開命令列模式。
:nme :nmenu :nnoreme :nnoremenu :nunme :nunmenu 以「n」開頭的選單指令在一般模式下運作。 mapmode-n
:ome :omenu :onoreme :onoremenu :ounme :ounmenu 以「o」開頭的選單指令在待操作模式下運作。 mapmode-o
:vme :vmenu :vnoreme :vnoremenu :vunme :vunmenu 以「v」開頭的選單指令在視覺模式下運作。 mapmode-v
:xme :xmenu :xnoreme :xnoremenu :xunme :xunmenu 以「x」開頭的選單指令在視覺和選取模式下運作。 mapmode-x
:sme :smenu :snoreme :snoremenu :sunme :sunmenu 以「s」開頭的選單指令在選取模式下運作。 mapmode-s
:ime :imenu :inoreme :inoremenu :iunme :iunmenu 以「i」開頭的選單指令在插入模式下運作。 mapmode-i
:cme :cmenu :cnoreme :cnoremenu :cunme :cunmenu 以「c」開頭的選單指令在命令列模式下運作。 mapmode-c
:tlm :tlmenu :tln :tlnoremenu :tlu :tlunmenu 以「tl」開頭的選單指令在終端模式下運作。 mapmode-t
:menu-<silent> :menu-silent 若要定義不會在命令列上回顯的選單,請將「<silent>」新增為第一個參數。範例
:menu <silent> Settings.Ignore\ case  :set ic<CR>
使用此選單時,「:set ic」不會回顯。不過,仍會顯示已執行指令的訊息。若要也關閉這些訊息,請在已執行指令中新增「:silent」
:menu <silent> Search.Header :exe ":silent normal /Header\r"<CR>
「<silent>」也可以在「<script>」之後立即出現。
:menu-<script> :menu-script 選單的「to」部分會檢查是否有映射。如果您不想要這樣,請使用「:noremenu」指令(或針對特定模式的類似指令)。如果您確實想要使用腳本局部映射,請將「<script>」新增為「:menu」指令的第一個參數,或緊接在「<silent>」之後。
選單優先順序
您可以為選單指定優先順序。優先順序較高的選單會更靠右顯示。優先順序以數字形式在「:menu」指令之前給定。範例
:80menu Buffer.next :bn<CR>
預設選單的優先順序如下:File 10 Edit 20 Tools 40 Syntax 50 Buffers 60 Window 70 Help 9999
當未給定或給定零優先順序時,會使用 500。快顯選單的優先順序不會使用。
您可以使用高於 9999 的優先順序,使其顯示在 Help 選單之後,但這不是標準做法,不建議使用。最高可能的優先順序約為 32000。最低為 1。
子選單優先順序
相同的機制可以用來定位子選單。然後,優先順序會在選單名稱之前,以點分隔的優先順序清單形式給定
:menu 80.500 Buffer.next :bn<CR>
僅當項目不放置在正常位置時,才需要給定子選單優先順序。例如,將子選單放在其他項目之前
:menu 80.100 Buffer.first :brew<CR>
或將子選單放在其他項目之後,而具有預設優先順序的其他項目會放在其之前
:menu 80.900 Buffer.last :blast<CR>
當缺少數字時,會使用預設值 500
:menu .900 myMenu.test :echo "text"<CR>
選單優先順序僅在建立新選單時使用。當它已經存在時,例如,在另一種模式下,優先順序將不會變更。因此,只需要在第一次使用選單時給定優先順序。快顯選單是例外。每個模式(一般模式、待操作模式、視覺模式、插入模式、命令列模式)都有單獨的選單。這些選單中的順序可能會有所不同。這與選單列選單不同,選單列選單在所有模式下都具有相同的順序。注意:目前子選單優先順序不適用於所有 GUI 版本。
選單分隔符號 E332 選單項目可以用特殊項目分隔,這些項目會在項目之間插入一些空間。根據系統的不同,此項目會顯示為一行或虛線。這些項目必須以「-」開頭,並以「-」結尾。中間的部分用於給定唯一的名稱。優先順序可以與正常項目一樣使用。範例
:menu Example.item1        :do something
:menu Example.-Sep-        :
:menu Example.item2        :do something different
請注意,分隔符號也需要 rhs。它是什麼並不重要,因為永遠不會選取該項目。使用單個冒號以保持簡單。
gui-工具列
預設工具列在 menu.vim 中設定。工具列的顯示由 'guioptions' 字母 'T' 控制。因此,您可以同時擁有選單和工具列,或者兩者擇一,或者兩者皆無。外觀由 'toolbar' 選項控制。您可以在圖片、文字或兩者之間選擇。
工具列圖示
工具列定義為一個名為 ToolBar 的特殊選單,該選單只有一層。Vim 將此選單中的項目解譯如下:1) 如果指定了「icon=」引數,則會使用具有此名稱的檔案。檔案可以使用完整路徑或基本名稱指定。在後一種情況下,會像第 3 點一樣在 'runtimepath' 中的「bitmaps」目錄中搜尋。範例
:amenu icon=/usr/local/pixmaps/foo_icon.xpm ToolBar.Foo :echo "Foo"<CR>
:amenu icon=FooIcon ToolBar.Foo :echo "Foo"<CR>
請注意,在第一種情況下,會包含副檔名,而在第二種情況下,則會省略。如果無法開啟檔案,則會嘗試下一個點。檔案名稱中的空格必須以反斜線逸出。選單優先順序必須在圖示引數_之後_出現
:amenu icon=foo 1.42 ToolBar.Foo :echo "42!"<CR>
2) 名為「BuiltIn##」的項目(其中 ## 是數字)被視為 Vim 中可用的內建點陣圖的數字 ##。目前有 31 個編號從 0 到 30,涵蓋大多數常見的編輯操作 內建工具
:amenu ToolBar.BuiltIn22 :call SearchNext("back")<CR>
3) 具有其他名稱的項目首先會在 'runtimepath' 中的「bitmaps」目錄中搜尋。如果找到,則會使用點陣圖檔案作為工具列按鈕圖片。請注意,確切的檔案名稱是作業系統特定的:例如,在 Win32 下,命令
:amenu ToolBar.Hello :echo "hello"<CR>
將會找到檔案 'hello.bmp'。在 X11 下,它是 'Hello.xpm'。對於 MS-Windows,點陣圖會縮放以符合按鈕大小。對於 MS-Windows,18 x 18 像素的大小效果最佳。對於 MS-Windows,點陣圖應具有包含標準調色盤的 16 種顏色。淺灰色像素將變更為視窗框架顏色,而深灰色像素將變更為視窗陰影顏色。更多顏色也可能有效,具體取決於您的系統。4) 如果仍然找不到點陣圖,Vim 會檢查是否與其內建名稱清單相符。每個內建按鈕圖片都有一個名稱。因此,命令
:amenu ToolBar.Open :e
如果不存在 open.bmp,則會顯示內建的「開啟檔案」按鈕圖片。menu.vim 中可以看到所有內建名稱的使用方式。5) 如果所有其他方法都失敗,則會顯示空白但可運作的按鈕。
內建工具
編號 名稱 一般動作
00 新增 開啟新視窗 01 開啟 瀏覽要在目前視窗中開啟的檔案 02 儲存 將緩衝區寫入檔案 03 復原 復原上次變更 04 重做 重做上次復原的變更 05 剪下 刪除選取的文字到剪貼簿 06 複製 將選取的文字複製到剪貼簿 07 貼上 從剪貼簿貼上文字 08 列印 列印目前緩衝區 09 說明 開啟 Vim 內建說明上的緩衝區 10 尋找 開始搜尋指令 11 全部儲存 將所有已修改的緩衝區寫入檔案 12 儲存階段 將目前情況的階段檔案寫入檔案 13 新增階段 寫入新的階段檔案 14 載入階段 載入階段檔案 15 執行腳本 瀏覽要作為 Vim 腳本執行的檔案 16 取代 提示輸入取代指令 17 關閉視窗 關閉目前視窗 18 最大化視窗 使目前視窗使用多行 19 最小化視窗 使目前視窗使用少行 20 分割視窗 分割目前視窗 21 Shell 啟動 Shell 22 尋找上一個 再次向後搜尋 23 尋找下一個 再次向前搜尋 24 尋找說明 提示要搜尋的說明文字 25 執行 Make 執行 make 並跳到第一個錯誤 26 跳到標籤 跳到游標下的標籤 27 執行 Ctags 為目前目錄中的檔案建立標籤 28 垂直分割視窗 垂直分割目前視窗 29 最大化視窗寬度 使目前視窗使用多欄 30 最小化視窗寬度 使目前視窗使用少欄
隱藏選單 win32-隱藏選單 在 Win32 GUI 中,以 ']' 開頭的選單名稱會將該選單從主選單列中排除。然後您必須使用 :popup 指令來顯示它。
分割視窗時,視窗工具列不會複製到新視窗。
快顯選單
您可以定義特殊選單「PopUp」。如果 'mousemodel' 設定為 popup 或 popup_setpos,則當按下滑鼠右鍵時會顯示此選單。
預設的「PopUp」選單為
anoremenu PopUp.Go\ to\ definition      <Cmd>lua vim.lsp.buf.definition()<CR>
amenu     PopUp.Open\ in\ web\ browser  gx
anoremenu PopUp.Inspect                 <Cmd>Inspect<CR>
anoremenu PopUp.-1-                     <Nop>
vnoremenu PopUp.Cut                     "+x
vnoremenu PopUp.Copy                    "+y
anoremenu PopUp.Paste                   "+gP
vnoremenu PopUp.Paste                   "+P
vnoremenu PopUp.Delete                  "_x
nnoremenu PopUp.Select\ All             ggVG
vnoremenu PopUp.Select\ All             gg0oG$
inoremenu PopUp.Select\ All             <C-Home><C-O>VG
anoremenu PopUp.-2-                     <Nop>
anoremenu PopUp.How-to\ disable\ mouse  <Cmd>help disable-mouse<CR>
顯示選單映射到的內容 顯示選單
若要查看現有選單對應的項目,請在選單指令後只使用一個參數(就像使用 ":map" 指令一樣)。如果指定的選單是子選單,則會顯示該層級下的所有選單。如果在 :menu 後完全沒有給定任何參數,則會顯示適用模式的所有選單項目(例如,:cmenu 對應命令列模式)。
列表中,右側(rhs)之前的特殊字元
* 選單定義時使用了 "nore" 以禁止重新映射。
& 選單定義時使用了 "<script>" 以允許重新映射腳本局部映射。
s 選單定義時使用了 "<silent>" 以避免在觸發時顯示其映射的內容。
- 選單已停用。
請注意,在輸入選單指令後的選單名稱時,按下 <Tab> 鍵可用於補完選單項目的名稱。
執行選單 execute-menus
:em :emenu E334 E335 :[range]em[enu] {menu} 從命令列執行 {menu}。預設是執行一般模式選單。如果指定了範圍,則會執行可視模式選單。如果從 <c-o> 使用,則會執行插入模式選單。例如:
:emenu File.Exit
:[range]em[enu] {mode} {menu} 與上述類似,但執行 {mode} 的選單:'n': :nmenu 一般模式、'v': :vmenu 可視模式、's': :smenu 選擇模式、'o': :omenu 運算符等待模式、't': :tlmenu 終端模式、'i': :imenu 插入模式、'c': :cmenu 命令列模式。
您可以使用 :emenu 來存取您可能已習慣從 GUI 模式使用的實用選單項目。請參閱 'wildmenu' 選項,它與此功能搭配良好。請參閱 console-menus 以取得範例。
當使用範圍時,如果行與 '<,'>' 匹配,則選單會使用最後的可視選取範圍執行。
刪除選單 delete-menus
:unme :unmenu :aun :aunmenu 若要刪除選單項目或整個子選單,請使用 unmenu 指令,其與 unmap 指令類似。例如:
:unmenu! Edit.Paste
這將會從插入和命令列模式的「編輯」選單中移除「貼上」項目。
請注意,在 umenu 指令後輸入選單名稱時,按下 <Tab> 鍵可用於補完適用模式的選單項目名稱。
若要移除所有選單,請使用: :unmenu-all
:unmenu *        " remove all menus in Normal and visual mode
:unmenu! *        " remove all menus in Insert and Command-line mode
:aunmenu *        " remove all menus in all modes, except for Terminal
                " mode
:tlunmenu *        " remove all menus in Terminal mode
如果您想擺脫選單列
:set guioptions-=m
停用選單 disable-menus
:menu-disable :menu-enable 如果您不想移除選單,但想暫時停用它,可以將 "enable" 或 "disable" 關鍵字新增至 ":menu" 指令。範例:
:menu disable &File.&Open\.\.\.
:amenu enable *
:amenu disable &Tools.*
此指令的適用模式與所有選單指令相同。請注意,像是 "&" 之類的字元需要包含在內,才能找到翻譯後的名稱。當參數是 "*" 時,所有選單都會受到影響。否則,給定的選單名稱及其下的所有現有子選單都會受到影響。
選單範例 menu-examples
這裡有一個關於如何新增包含選單的選單項目的範例!您可以為游標下的關鍵字新增選單項目。將使用暫存器 "z"。
:nmenu Words.Add\ Var                wb"zye:menu! Words.<C-R>z <C-R>z<CR>
:nmenu Words.Remove\ Var        wb"zye:unmenu! Words.<C-R>z<CR>
:vmenu Words.Add\ Var                "zy:menu! Words.<C-R>z <C-R>z <CR>
:vmenu Words.Remove\ Var        "zy:unmenu! Words.<C-R>z<CR>
:imenu Words.Add\ Var                <Esc>wb"zye:menu! Words.<C-R>z <C-R>z<CR>a
:imenu Words.Remove\ Var        <Esc>wb"zye:unmenu! Words.<C-R>z<CR>a
(右側(rhs)以 <> 符號表示,您可以複製/貼上此文字來試用這些映射,或將這些行放入您的 gvimrc 中;"<C-R>" 是 CTRL-R,"<CR>" 是 <CR> 鍵。 <>
tooltips menu-tips 工具提示 & 選單提示
請參閱使用者手冊中的 42.4 節。
:tmenu
:tm[enu] {menupath} {rhs} 為選單或工具定義提示。(僅限於 X11 和 Win32 GUI)
:tm[enu] [menupath] 列出選單提示。(僅限於 X11 和 Win32 GUI)
:tunmenu
:tu[nmenu] {menupath} 移除選單或工具的提示。(僅限於 X11 和 Win32 GUI)
注意:若要為終端模式建立選單,請改用 :tlmenu
當為選單項目定義提示時,當滑鼠停留在該項目上時,提示會出現在命令列區域,很像狀態列中的標準 Windows 選單提示。(除非 Vim 處於命令列模式,當然就不會顯示任何內容。)當為工具列項目定義提示時,當滑鼠暫停在該按鈕上方時,提示會以常見的方式顯示為工具提示。使用 hl-Tooltip 反白群組來變更其顏色。
可以為每個選單項目定義「提示」。例如,當定義像這樣的選單項目時
:amenu MyMenu.Hello :echo "Hello"<CR>
提示定義如下
:tmenu MyMenu.Hello Displays a greeting.
並使用以下命令刪除它
:tunmenu MyMenu.Hello
目前只有 X11 和 Win32 GUI 支援工具提示。但是,它們應該在不久的將來會出現在其他 GUI 平台上。
":tmenu" 指令的工作方式與其他選單指令相同,它使用相同的參數。":tunmenu" 會刪除現有的選單提示,其方式與其他 unmenu 指令相同。
如果選單項目變為無效(即其在所有模式中的動作都被刪除),Vim 會為您刪除選單提示(和項目)。這表示 :aunmenu 會刪除選單項目 - 您不需要同時執行 :tunmenu。
5.9 快顯選單
您可以讓選單在游標處彈出。此行為與快顯選單類似,只是可以彈出任何選單樹。
:popup :popu :popu[p] {name} 彈出選單 {name}。指定的選單必須至少有一個子項目,但不一定要出現在選單列上(請參閱 hidden-menus)。
:popu[p]! {name} 與上述類似,但使用滑鼠指標的位置而不是游標的位置。
範例
:popup File
這將使「檔案」選單(如果有的話)出現在文字游標處(如果使用了 !,則為滑鼠指標處)。
:amenu ]Toolbar.Make        :make<CR>
:popup ]Toolbar
這會建立一個不存在於主選單列上的快顯選單。
請注意,以 ']' 開頭的選單將不會顯示。
主要
指令索引
快速參考