我正在为一家主要基于 Windows 的公司的开发人员设置虚拟化 Linux 盒子(作为本地开发服务器),并且一些开发人员对 vim(除其他外)提出了负面批评。 (在他们看来,这在某种程度上代表了 Linux/Unix,并证明了该环境非常难以使用。)我记得当我第一次被迫使用 vim 时(系统管理员拒绝安装 emacs!)以及困难的初始操作学习曲线,所以我有点同情。我突然想到,与其向他们介绍nano
(他们可能永远无法通过),不如在 vim 中设置类似纳米的菜单,以使转换更容易。 (我找到了一个非常适合初学者的 .vimrc 文件来提供给他们,但它没有类似纳米风格菜单的东西。)
唯一的问题是我能找到的唯一一个声称可以在 vim (而不是 gvim)中设置菜单的东西不起作用,而我尝试纠正这个问题只是给我留下了另一个需要解决的问题。在我浪费大量时间之前,我想知道这实际上是否可能,因为关于如何做到这一点的信息似乎很少。
答案1
对的,这是可能的。您可以加载menu.vim
(默认的 gvim 菜单定义),或者您可以从头开始并创建自己的菜单,然后通过:emenu
.不过,这并没有为您提供类似 Nano 的始终可见的菜单;它使您能够使用命令行选项卡完成来导航菜单。
如果用户没有 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
我自己也遇到过这样的问题:我无法记住我正在使用的插件的所有命令和组合键。另外,我希望有简单的方法来快速执行命令,而无需设置新的键映射或发明命令来访问它们。
维姆维努
我写了一个小vim 菜单插件它允许您为可以使用 vim 编辑的每种文件类型定义菜单。这样,您可以为不同的文件类型定义菜单选项“编译”,并根据您正在编辑的文件(.py、.c、.c++、...)启动正确的指令来编译代码。或者在 Markdown 文件中为“Table”插件命令创建子菜单。
在这里查看: https://github.com/Timoses/vim-venu
附带说明:我认为每个人都应该选择自己喜欢的文本编辑器。 Vim 确实有一点障碍(值得学习!)。如果有人不愿意学习,那么 vim 对那个人来说就没有多大用处。