在gvim中,您可以轻松地创建自定义菜单。我的gvimrc中的这些额外行添加了一个python的“实用程序”菜单。
menu Python.Run <ESC>:Shell python %<cr>
menu Python.Run\.\.\. <ESC>:Shell python %:p
menu Python.Pyflakes <ESC>:Shell pyflakes %<cr>
menu Python.Pychecker <ESC>:Shell pychecker %<cr>
menu Python.Pep-8 <ESC>:call Flake8() %<cr>
menu Python.FixTabs <ESC>:ret<cr> 有了这一行,我将在命令行:shell python my/file/full/path/myfile.py中显示它,以便在单击“返回”之前对路径进行一些修改
但是,我无法以任何方式得到完整的路径评估;这是行不通的:
menu Python.Run\.\.\. <ESC>:Shell python %:p 我试图调用一个单独的函数,该函数将展开路径并回显正确的命令,但尽管它实际上回显了Vim命令行中的正确内容,但文本既不能执行,也不能将焦点转到命令行。
我也尝试过在vim技巧中找到这种语法(我不理解BTW),但是没有更多的成功:
menu Python.Run\.\.\. <ESC>:Shell python <C-R>1<C-G> 有没有人遇到过类似的问题?
发布于 2014-09-02 12:51:31
您的自定义菜单调用:Shell命令,该命令可能稍后会调用:!。重要的是,特殊占位符%:p最后只能通过:!命令进行计算。因此,当您想要定义一个不完整的菜单项时(为了进一步的编辑),这是行不通的,您需要显式地展开占位符。
你找到的语法方向是正确的。在命令行模式(映射通过:进入)中,Ctrl映射插入一个寄存器;cp。:help c_CTRL-R。使用特殊的=表达式寄存器,您可以计算一个Vimscript表达式,并且确实有一个处理这些占位符的expand()函数。因此:
menu Python.Run\.\.\. <ESC>:Shell python <C-R>=expand('%:p')<CR>尾随的<CR>只结束表达式条目,而不是命令行本身,因此它保持活动状态以供进一步编辑!
https://stackoverflow.com/questions/25623413
复制相似问题