【问题标题】:Add word under cursor to search pattern在光标下添加单词以搜索模式
【发布时间】:2012-03-04 21:22:15
【问题描述】:

当光标在单词theWord上时使用*,vim直接跳转到该单词的下一个出现,即执行/\<theWord\>

问题:

当光标在另一个词上时,有没有办法在搜索中添加另一个词 otherWord,以便执行 /\<theWord\>\|\<otherWord\>

【问题讨论】:

  • 离题,但感谢您让我知道这个简单的快捷方式!我每天都用 vim 学习 :-)
  • @FlorianMargaine:你并不孤单;)看看这个:rayninfo.co.uk/vimtips.html

标签: vim


【解决方案1】:

试试

:nnoremap <silent> + :let @/ .= '\\|\<'.expand('<cword>').'\>'<cr>n

当点击“+”时,会将光标下的单词附加到搜索寄存器,并跳转到任何搜索到的模式的 next 出现处。

如果你想把它扩展到可视模式,(如it could be done to n_star),你有

:vnoremap <silent> + <c-\><c-n>:let @/ .= '\\|'.escape(lh#visual#selection(), '/\^$*.[~')<cr>n

使用lh#visual#selection() 获取当前选择,使用escape() 中和正则表达式中的一些活动字符。 v_CTRL-\_CTRL-N 是一个安全且无声的转义序列。

【讨论】:

  • 对您在这里所做的任何解释将不胜感激。不要只是想复制和粘贴一些东西。干杯!
  • :help 命令允许询问 vim 对您不知道的内容的精度,-> :h nnoremap:h :let:h .=:h expand():h n:h @/ NB: 结束命令模式。
  • 这就是为什么它被称为答案而不是提示?! ;)
  • 你已经知道'\|',那么从哪里开始呢?这条线非常简单,不需要太多解释。没有任何技巧(除了&lt;cr&gt;的使用,以及\|的奇怪行为)
  • 视觉选择的链接已损坏,请改用:github.com/LucHermitte/lh-vim-lib/blob/master/autoload/lh/…
【解决方案2】:

尝试类似:

  1. *(搜索单词)
  2. 搬到别处
  3. :let @/=@/.'\|\&lt;'.expand("&lt;cword&gt;").'\&gt;' 这会将光标下的当前单词附加到上一个搜索模式中,并带有一些分隔符(\| 和单词边界...)
  4. 如果你愿意,可以为它设置一个热键,比如:nnoremap &lt;F4&gt; :let @/.='\\|\&lt;'.expand("&lt;cword&gt;").'\&gt;'&lt;CR&gt;

【讨论】:

  • 太好了!!正是我想要的,特别是 4.)!请输入另一个转义符` before \|, i.e. \\|` 以使其正常工作。
  • 我需要nmap &lt;F4&gt; :let @/=@/.'\\|\&lt;'.expand("&lt;cword&gt;").'\&gt;'&lt;CR&gt;。所以管道前的双反斜杠
  • 如果可能,您应该始终更喜欢nnoremap 而不是nmap。顺便说一句,:let 现在支持.=
  • @Luc Hermitte 不是 nnoremap==nmap 吗?为什么更好?谢谢。
  • nore 映射和缩写可防止副作用。搜索“重新映射”。在这里,如果您的映射的某些用户决定将 : 重新映射到 ; 并且反之,则映射将不再起作用 - 是的,有时人们的配置很奇怪。
猜你喜欢
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多