所以我对VIM有点新意并且喜欢它,但目前正在尝试为插件添加自定义命令"vim-open-url",所以目前看起来如下所示。
nnoremap <C-i> :OpenURL http://localhost...?grep=<cword><CR>
所以我要做的就是获取一个测试名称并在浏览器中打开它并用grep指定测试。
测试线的示例是:
it('should do something ... test', function() {
目前它抓住了我所站立的单词,所以它会是&#34; grep = something&#34;但我需要单引号之间的全文。所以对于这个问题!
如何让我的#34;真棒&#34;自定义命令行抓取单引号之间的全文?
答案 0 :(得分:1)
Vim仅提供<cword>
和<cWORD>
;对于其他任何你需要一个不同的方法。
&#34;正确&#34;方法是使用matchstr(getline('.'), "'\\zs[^']\\+\\ze'")
提取单引号内的文本。为了更好地模拟内置函数,您还需要确保光标实际位于引号内(使用\%#
原子匹配光标位置search()
)。如果没有带引号的字符串,则应打印错误消息。所有这些都需要多行代码,所以我们现在讨论的是映射调用的自定义:function
。我会采用这条路线来实现强大的插件实现。
我ingo-library plugin之类的图书馆可以简化此操作,在本例中为ingo#text#frompattern#GetAroundHere()
如果您对破坏默认寄存器感到满意,我们可以让内部引用文本对象(i'
)完成大部分工作。调整映射到第一个yi'
,然后通过<C-r>
直接在命令行模式下插入寄存器内容:
nnoremap <C-i> yi':OpenURL http://localhost...?grep=<C-r>"<CR>
或者,我们可以通过@"
将寄存器(:execute
)插入命令行:
nnoremap <C-i> yi':execute 'OpenURL http://localhost...?grep=' . @"<CR>