如何在Vim中搜索两个单词而不使用“/”?

时间:2014-10-30 07:58:58

标签: vim

我想在vim中自定义一个宏,包括一个搜索一组单词的函数 有可能吗?

The input values can't be empty. (1)
    ^
The input value is five.(2)
    ^
The input values is unknown.(3)
    ^

光标在(1)中。我想搜索"输入值"。
错误搜索:"输入值"在(2)。
预期:光标指向"输入值"在(3)。

2 个答案:

答案 0 :(得分:3)

所以,如果我理解你的话,你需要类似* / #命令的内容,但不是当前的单词,而是更多/不同的文字?!

多个插件将* / #命令扩展为可视模式。使用它们,您可以选择两个单词(input values),然后通过v2e*)搜索它们。一个这样的插件是我的SearchHighlighting plugin,它还提供了其他功能。 (插件页面包含指向其他插件的链接。)visualstar.vim plugin仅提供该功能。

答案 1 :(得分:1)

nnoremap \g v2e:call VisualSearch()<CR>

function! VisualSearch() range
    let l:saved_reg = @"
    execute "normal! vgvy"
    let l:pattern = escape(@", '\\/.*$^~[]')
    let l:pattern = substitute(l:pattern, "\n$", "", "")
    execute "normal /" . l:pattern . "^M"
endfunction

v2e会在视觉模式中选择两个单词(只有光标位于第一个单词的开头);

然后:call VisualSearch()<CR>,调用函数VisualSearch;

VisualSearch将搜索您在视觉模式中选择的字词

它对我有用。