VIM打开网址插头抓取线

时间:2017-08-28 10:15:52

标签: vim

所以我对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;自定义命令行抓取单引号之间的全文?

1 个答案:

答案 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>