`
xugming
  • 浏览: 96442 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

个性化你的Vim -- 加入你自己的菜单和工具按钮

阅读更多
Hacking Vim 中文翻译 by Alec alec.ming@gmail.com

[GVim]7+ 加入你自己的菜单和工具按钮

如果你用的是GVim, 你可以做一个非常方便的菜单, 用来存放最经常用到的功能. 你也许不会总是从菜单调用那些功能, 但是如果你忘记了怎么用, 你总是可以从菜单中找到. 如果你需要更快的调动这个功能, 你甚至可以把它加到工具条上.

在这个方案中, 我们看看在GVim中怎么制做菜单以及怎样把按钮放到工具条的.

添加一个菜单


制做一个菜单就是说, 把你想要执行的命令当作每一个菜单项放在里面. 只要你遵守了正确的命名, 你就会看到一个包含着你想要的功能的非常好小菜单.

咱们从一个简单的小例子开始吧. 假设你想要制作一个类似于缓冲区菜单(buffers), 用来进行标签(tab)操作的自定义菜单.



你需要的命令是:
:menu menupath command


这个命令非常像那个map命令, 不过不是把命令和功能键绑定, 而是把命令放到菜单里.

这个命令有两个参数. 第一个这个功能需要放入的菜单的真实路径, 第二次是功能的命令. 比如, 一个Tabs菜单中的叫Next的菜单项, 命令就是这样的:

:menu Tabs.Next <ESC>:tabnext<cr>


这样你就有了一个叫Tabs的菜单和一个叫Next的菜单项. Next菜单项做的就是执行下面这人命令:

:tabnext


这条命令代替键盘先按下ESC键进入普通模式, 然后再按回车<cr>去真实的执行这条命令. 如果你没有加入<Esc>那么这条命令就不会工作. 另一种解决方法就是根据当前的模式设置不同的菜单项.  因为Vim有一系列:menu命令的替代品:

:nmenu - 普通模式
:imenu - 插入模式. 在前面会加上了^O.
:vmenu - 可视模式(Visual). 前面会加上^C 并且^\^G附加在后面.
:cmenu - 命令模式. 前面会加上^C并且^\^G附加在后面.
:omenu - 等特操作符模式(OP-pending模式).前面加上^C并且^\^G附加在后面.

附加的部分(^O 和 ^C)就是进入普通模式.

^O(Ctrl-O)是用于插入模式, 因为它会在执行完命令后返回插入模式.

^\^G(Ctrl-\ Ctrl-G)是解决在全局插入模式设置为true时的情况, 当设为true时, Vim会把插入模式当作默认的模式, 即Vim变成无模式. 附加^\^G时, Vim就会在执行回命令时一定返回插入模式, 而其他的附加情况就会回到原来的模式.

除了为单独的模式设置同样的菜单项外, 你也可以换成下面的命令:

:amenu menu-path command

根据当前的模式, 这个命令前后会附加上正确的东西.


我们再来看新的Tabs菜单, 并且加上一个新的菜单项和功能. 通过下面的命令, 它看起来会更像Buffers菜单.

:amenu Tabs.&Delete :confirm tabclose<cr>
:amenu Tabs.&Alternate            :confirm tabn #<cr>
:amenu <silent> Tabs.&Next        :tabnext<cr>
:amenu <silent>Tabs.&Previous     :tabprevious<cr>

细心读者会发现在我们命令中多了些东西.

第一个就是在最后两个命令的<silent>标签. 加上了这个标签, 我们可以避免命令在执行的过程中显示在命令缓冲区. 这是个比较好的功能, 在菜单路径中加上&更是一个强大的功能. 在菜单路径的最后一部分的某个字母前加上&, 就可以为这一个菜单项增加一个键盘快捷键(keyboard shortcut). 这个使我们能更快速地转到(navigate)那个菜单项并且执行它.



假设我们到通过执行菜单Tabs->Next来转到下一个标签; 现在我们可以简单地按下Alt-t n即可. Alt-t打开了Tabs, n去执行了Next项 - 因为&在Next中N的前面. 如果其它的菜单项使用了同样字母作为快捷键, 你可以重复地按Alt键来来回选择它们.

如果你想在你的菜单中加上一条分隔线, 可以使用SEP作为菜单项, : (冒号)作为命令, 即 :amenu Tabs.-SEP- :

我们做的那个菜单可以是保存在当前的会话(session)中, 所以如有你想要让每次使用GVim都会有这个菜单, 只需要在vimrc文件中把它加上(把上次的命令加上, 不包含前面的:).

所以现在我们有一个像缓冲区菜单(Buffer)一样的Tabs菜单了. 但是它不能像Buffers菜单中可以列出所有可用的buffer. 其实buffer是可以对用户隐藏的, 这两个菜单也没什么不同, 都没有将内容列出来, 但是tab(标签)是不能对用户隐藏的. 用户总能从标签栏中知道共有多少个标签, 以及标签的名字.

一个用户菜单可以做很多很趣的事情. 如果你要用很多种不同类型的文件, 你甚至可以每种文件类型对应不同的菜单, 或者对应同一个菜单的不同的子菜单.

子菜单可以通过菜单路径的命名常规来创建. 所以如果你想要有这样的菜单 Tabs >Navigation >Next, 你可以简单地把Next菜单项加到这样的菜单路径中Tabs.Navigation.&Next
  • 大小: 7.3 KB
  • 大小: 4.6 KB
分享到:
评论

相关推荐

    Python-qutebrowser基于PyQt5的键盘驱动类似vim的浏览器

    用户可以自定义几乎所有的键绑定,调整浏览器的行为,甚至修改内部的配置文件以满足个性化需求。此外,qutebrowser支持多种插件,这些插件可以扩展浏览器功能,例如增强广告拦截、增加隐私保护等。 **源代码及版本...

    vimrc常用配置

    通过定制化的`.vimrc`配置文件,用户可以根据自己的习惯对vim进行个性化设置,从而达到提升工作效率的目的。 #### 二、基本配置项解析 在提供的`.vimrc`配置片段中,我们可以看到一系列与编辑器行为相关的设置。...

    themecreator:https:mswift42.github.iothemecreator为intellij,textmate,atom,emacs,vim和gnome终端创建主题

    使用 `themecreator`,你可以创建独特的主题,不仅改变代码的颜色,还可以定制界面元素,如菜单、按钮和工具窗口的颜色。 2. **TextMate**:这是一款 Mac OS X 上的文本编辑器,因其强大的功能和可扩展性而受到喜爱...

    XSHELL 绝佳配色方案, 保护你的眼睛

    ### XSHELL绝佳配色方案详解 #### 一、概述 Xshell是一款强大的终端模拟器,广泛应用于远程服务器管理。为了提升用户体验与保护视力,合理的配色...这些个性化设置可以根据个人喜好进行调整,以达到最佳的视觉效果。

    neovim-qt.zip

    用户可以自定义这些文件来个性化他们的编辑器体验。 **详细知识点**: 1. **Neovim**:Neovim是一个从Vim fork出来的项目,旨在改进Vim的可扩展性和开发者的友好性,支持异步插件系统,提高了性能,并引入了新的...

    PyCharm基本设置和常用操作

    无论你是初学者还是经验丰富的程序员,都能从PyCharm中找到适合自己的工具。本文将详细介绍PyCharm的安装、项目创建、基本配置、控制台使用以及其他一些实用技巧。 #### 二、下载与安装 - **PyCharm版本选择**:...

    【精品】codeblocks的15个经典主题

    为了提升编程体验,我们可以为CodeBlocks安装不同的主题,使其外观更加个性化和舒适。本资源提供的是15个精心挑选的经典主题,旨在帮助用户将CodeBlocks变得更具吸引力。 1. **主题安装**:在CodeBlocks中更换主题...

    eclipse color theme 附件

    它允许用户导入预设的主题或者创建自己的定制主题,为代码的高亮显示添加个性化的色彩。通过改变颜色搭配,可以减轻长时间编程导致的眼睛疲劳,同时也能使代码结构更加清晰,提高代码可读性。 二、安装Eclipse ...

    最好用的secureCRT

    5. 配置设置:在“选项”菜单下,可以调整字体、颜色、快捷键等个性化设置。 6. 文件传输:在会话窗口中,右键选择“SFTP”或“SCP”进行文件传输操作。 五、总结 SecureCRT以其稳定、高效和安全性,成为许多IT专业...

    firefox-i3wm主题:i3和qutebrowser启发了firefox的主题

    标题中的“firefox-i3wm主题”指的是一个专为Firefox浏览器设计的定制主题...这个主题的开发和分享体现了开源社区的精神,鼓励用户根据自己的需求对软件进行个性化定制,同时也体现了Firefox浏览器的开放性和可扩展性。

    pnedit_文本编辑器.pdf

    Menu区域提供了File、Edit、View、Buffers、Tool和Help六个菜单项,而Button区域则提供了相应的七个按钮项,这些按钮项通常对应于菜单项的快捷操作。Edit区域是文本编辑的主窗口,它支持按Tab和Split的方式进行多...

    解决Pycharm出现的部分快捷键无效问题

    同时,了解和掌握PyCharm的设置和个性化选项,有助于更好地适应和优化开发环境,提升编程体验。希望本文提供的方法能帮助你成功解决PyCharm快捷键失效的问题,如果你在操作过程中遇到任何困难,都可以寻求社区的支持...

Global site tag (gtag.js) - Google Analytics