Gui

Nvim :help 页面,从 生成来源 使用 tree-sitter-vimdoc 解析器。


Nvim 图形用户界面 GUI
任何支持 Nvim ui-protocol 的客户端都可以用作 Nvim 的 UI。多个 UI 可以连接到同一个 Nvim 实例!术语“UI”和“GUI”经常互换使用,因为所有 Nvim UI 客户端都具有相同的潜在功能;“TUI”指的是输出到终端的 UI 客户端,而“GUI”直接输出到操作系统图形系统。
除非另有说明,本文件描述了 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} x {height} 字符。已过时,请使用“:set lines=11 columns=22”。

滚动条 gui-scrollbars

存在垂直滚动条和水平滚动条。您可以使用 '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

水平滚动条(位于 Vim GUI 的底部)可用于在关闭 'wrap' 选项时横向滚动文本。滚动条滑块的大小使得最长的可见行的文本可以尽可能地左右滚动。光标在必要时移动,它必须保持在可见字符上(除非 'virtualedit' 设置)。
计算最长的可见行需要相当多的计算,并且必须在每次发生变化时进行。如果这花费了太多时间,或者你不喜欢光标跳到另一行,请在 'guioptions' 中包含 'h' 标志。然后滚动将受当前光标行的文本限制。
您可以将一个或多个文件拖放到 Vim 窗口中,它们将像使用 :drop 命令一样打开。
如果在执行此操作时按住 Shift,Vim 会更改为第一个放置文件的目录。如果按住 Ctrl,Vim 将始终为文件拆分一个新窗口。否则,只有在当前缓冲区已更改的情况下才会执行此操作。
您也可以将目录拖放到 Vim 上。这将启动该目录的资源管理器插件(假设它已启用,否则您将收到错误消息)。按住 Shift 键可以改为更改到该目录。
如果 Vim 碰巧正在编辑命令行,则放置的文件和目录的名称将插入光标处。这使您可以将这些名称与任何 Ex 命令一起使用。特殊字符(空格、制表符、双引号和“|”;非 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
如果您还想避免加载语法菜单
:let did_install_syntax_menu = 1
语法菜单中的第一个项目可用于在菜单中显示所有可用的文件类型(这可能需要一些时间来加载)。如果您希望在启动时已存在所有文件类型,请添加
:let do_syntax_sel_menu = 1
请注意,menu.vim 在执行 :syntax on:filetype on 或在您的 .vimrc 文件被源代码化后被源代码化。这意味着必须在此之前设置 '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>”可在此处用于方便起见。如果您使用的是真正的制表符,请不要忘记在它前面加上反斜杠!示例
: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>
默认菜单的优先级如下:文件 10 编辑 20 工具 40 语法 50 缓冲区 60 窗口 70 帮助 9999
如果没有指定优先级或优先级为零,则使用 500。弹出菜单的优先级不使用。
您可以使用高于 9999 的优先级,使其位于帮助菜单之后,但这是非标准的,不建议这样做。最高的优先级约为 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=" 参数,则使用具有此名称的文件。该文件可以使用完整路径或基本名称指定。在后一种情况下,它将在 'runtimepath' 中的 "bitmaps" 目录中进行搜索,就像在第 3 点中一样。示例
: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,涵盖了最常见的编辑操作 builtin-tools.
: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 构建 运行构建并跳转到第一个错误 26 跳转到标记 跳转到光标下的标记 27 运行 ctags 为当前目录中的文件构建标记 28 垂直分割窗口 垂直分割当前窗口 29 最大化窗口宽度 使当前窗口使用多列 30 最小化窗口宽度 使当前窗口使用少列
hidden-menus win32-hidden-menus 在 Win32 GUI 中,菜单名称以 "]" 开头,会将其从主菜单栏中排除。 您必须使用 :popup 命令才能显示它。
分割窗口时,窗口工具栏不会复制到新窗口。
popup-menu
您可以定义特殊的菜单 "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>
显示菜单映射到的内容 showing-menus
要查看现有菜单映射到的内容,请在菜单命令后只使用一个参数(就像使用 ":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 如果您不想删除菜单,而只是暂时禁用它,则可以通过在 ":menu" 命令中添加 "enable" 或 "disable" 关键字来实现。 例子
: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 菜单的行为,只是可以弹出任何菜单树。
:popup :popu :popu[p] {name} 弹出菜单 {name}。 命名的菜单必须至少有一个子项,但不需要出现在菜单栏上(请参阅 hidden-menus)。
:popu[p]! {name} 与上面类似,但使用鼠标指针的位置而不是光标。
示例
:popup File
将使 "文件" 菜单(如果有)出现在文本光标处(如果使用了 "!",则出现在鼠标指针处)。
:amenu ]Toolbar.Make        :make<CR>
:popup ]Toolbar
这将创建一个不存在于主菜单栏上的弹出菜单。
请注意,以 "]" 开头的菜单不会显示。
命令索引
快速参考