是否可以在基于终端的vim中创建和使用菜单?


18

我正在为一家主要基于Windows的公司的开发人员设置虚拟化的Linux机器(作为本地开发服务器),并且一些开发人员对vim产生了负面的看法(除其他外)。(在他们看来,它们以某种方式代表了Linux / Unix,并证明了该环境很难使用。)我记得我第一次被迫使用vim时(sysadmins拒绝安装emacs!)和艰难的初始版本。学习曲线,所以我有点同情。在我看来,与其向他们介绍nano(他们可能永远也不会过去),不如在vim中设置类似于纳米的菜单,以使过渡更加容易。(我找到了一个非常适合初学者使用的.vimrc文件,但没有类似纳米风格的菜单。)

唯一的问题是我唯一发现的问题是,声称可以在vim(而不是gvim)中设置菜单是行不通的,而我纠正问题的尝试给我留下了另一个要解决的问题。在我浪费大量时间之前,我想知道这是否实际上是可能的,因为关于如何执行此操作的信息似乎很少。


3
现在,这是在Vim的帮助::h console-menus
阿列克谢2015年

@Alexey:谢谢!如果我向下滚动到“ 5.2创建新菜单”部分,它看起来像我想要的,那将非常有帮助。
iconoclast

Answers:


18

对的,这是可能的。您可以加载menu.vim(默认gvim菜单定义),也可以从头开始并创建自己的菜单,然后通过进行访问:emenu。但是,这不会给您像纳米一样的始终可见菜单。它使您能够使用命令行选项卡完成功能浏览菜单。

如果用户没有vimrc,则首先要禁用vi兼容性:

:set nocompatible

启用智能命令行完成<Tab>(启用列出所有可能的选择,并与导航的结果<Up><Down><Left><Right>,和<Enter>):

:set wildmenu

重复按一下将在所有匹配的选择之间循环:

:set wildmode=full

加载默认菜单(这将在gvim中自动发生,但不会在终端vim中发生):

:source $VIMRUNTIME/menu.vim

在执行这四个命令之后,您可以:emenu通过执行以下命令来手动触发菜单完成::emenu<space><tab>

您可以使用Tab键和箭头键以及Enter键(既扩展子菜单又选择项目)导航结果。然后,您可以通过进一步操作并绑定映射以弹出菜单,而不必:emenu每次都键入以下内容,从而更加方便:

使映射中的Ctrl-Z就像<Tab>在命令行上按交互键一样:

:set wildcharm=<C-Z>

并创建一个:emenu为您自动调用完成功能的绑定:

:map <F4> :emenu <C-Z>

2
辉煌!让我知道如何为您买啤酒!
iconoclast 2012年

2

我自己遇到了一个问题,我不记得我正在使用的插件的所有命令和组合键。另外,我想以简单的方法快速执行命令,而不必设置新的键映射或发明命令来访问它们。

维姆·维努

我编写了一个小的vim菜单插件,该插件可让您为可能使用vim编辑的每种文件类型定义菜单。这样,您可以为不同的文件类型定义菜单选项“编译”,并根据要编辑的文件(.py,.c,.c ++等)启动正确的指令来编译代码。或在markdown文件中为“ Table”插件命令创建子菜单。

在这里查看:https : //github.com/Timoses/vim-venu

附带说明:我认为每个人都应该选择自己喜欢的文本编辑器。Vim确实有一点障碍(值得学习!)。如果某人不愿意学习,那么vim对该人没有多大用处。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.