V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
skywind3000
V2EX  ›  Vim

漂亮的 Vim 弹出菜单插件

  •  
  •   skywind3000 · 2017-07-20 17:28:56 +08:00 · 5302 次点击
    这是一个创建于 2713 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我自己的配置中存在大量快捷键,时常会因为忘记快捷键而又要反复打开 vimrc 查看,一来一回浪费不少时间, 因此我为 Vim 开发了一个弹出菜单,保证既好看又方便的同时用 UI 逻辑来解决遗忘问题:

    • 按 F12 在右边弹出菜单,使用 j/k 进行上下移动
    • 按 回车 或者直接按数字键选择项目
    • 每个条目都包含帮助文本,在移动光标时会在下面的 cmdline 显示出来。
    • 每个条目都可以和文件类型相关联,不同的文件类型显示不同的目录内容。
    • 方便的定义目录内容,你可以有无数目录同时存在,不同快捷键对应不同目录。
    • 再也不怕忘记命令了。

    运行演示:

    项目地址:

    https://github.com/skywind3000/quickmenu.vim

    使用说明:

    function quickmenu#append(text, action [, help = ''])
    

    添加目录内容,text 是显示在菜单里的文字,action 是被选中时执行的 VimScript,help 是光标移动到具体项目上面时,显示在 cmdline 上的帮助信息。如果 action 是一个空字符串的话,表示一行静态说明文本(不可选择)。

    function quickmenu#toggle(menuid)
    

    弹出 /隐藏 quickmenu,同时有无限个目录存在,用 menuid 表示,默认为 0.

    简单配置:

    " 允许显示命令行帮助( H ),以及 cursorline ( L )
    let g:quickmenu_options = "LH"
    
    " 清除当前目录中所有内容
    call g:quickmenu#reset()
    
    " 设置 F12 为:显示 /隐藏 目录
    noremap <silent><F12> :call quickmenu#toggle(0)<cr>
    
    
    " section 1, 由井号开始的字符串表示一个 section
    call g:quickmenu#append('# Develop', '')
    
    call g:quickmenu#append('item 1.1', 'echo "1.1 is selected"', 'select item 1.1')
    call g:quickmenu#append('item 1.2', 'echo "1.2 is selected"', 'select item 1.2')
    call g:quickmenu#append('item 1.3', 'echo "1.3 is selected"', 'select item 1.3')
    
    " section 2 
    call g:quickmenu#append('# Misc', '')
    
    call g:quickmenu#append('item 2.1', 'echo "2.1 is selected"', 'select item 2.1')
    call g:quickmenu#append('item 2.2', 'echo "2.2 is selected"', 'select item 2.2')
    call g:quickmenu#append('item 2.3', 'echo "2.3 is selected"', 'select item 2.3')
    call g:quickmenu#append('item 2.4', 'echo "2.4 is selected"', 'select item 2.4')
    

    其实就是 append 一堆可以选择的项目就能工作了,多目录操作见项目文档。

    Vim 缺乏各种基础 UI 组件,对熟手没问题,对新人却很痛苦。我经常把自己的配置分享给别人,但是发现别人根本没有耐心去记忆我配置里面的快捷键,后来有了这个 quickmenu 以后,发现我的同事们相比枯燥的快捷键,更容易接受这个有界面操作的东西。

    --

    8 条回复    2017-07-21 12:56:58 +08:00
    kikyous
        1
    kikyous  
       2017-07-20 17:39:57 +08:00
    看起来不错
    nieyujiang
        2
    nieyujiang  
       2017-07-20 17:41:26 +08:00
    随手给个 Star
    Phoinikas
        3
    Phoinikas  
       2017-07-20 17:49:19 +08:00
    这个很棒,要是早点看到说不定我就不会投奔 Atom 了=.=
    TangMonk
        4
    TangMonk  
       2017-07-20 19:25:13 +08:00 via Android
    不错
    TJT
        5
    TJT  
       2017-07-20 20:15:14 +08:00
    最后忘记了打开帮助的快捷键是什么
    ech0x
        6
    ech0x  
       2017-07-20 20:47:58 +08:00 via iPad
    很不错啊~
    denonw
        7
    denonw  
       2017-07-21 10:18:27 +08:00
    这个可以,支持一下
    ryanzyy
        8
    ryanzyy  
       2017-07-21 12:56:58 +08:00
    支持一下。
    我自己也写过几个 VIM 插件,但很不愿意用 VimScript。
    那些都是用 python3 写的 要自己编译 vim 才能用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3190 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:38 · PVG 20:38 · LAX 04:38 · JFK 07:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.