【问题标题】:Go to next character under cursor in Vim在 Vim 中转到光标下的下一个字符
【发布时间】:2015-12-15 09:12:34
【问题描述】:

如标题中所述,我想转到 Vim 中当前光标下字符的下一个匹配项。我知道f <character> 等,但我特别想要“这个”字符。我该怎么做?

【问题讨论】:

  • 如果您的光标在字符s 上,那么fs; 将带您到下一个字符。对; 的重复点击将继续将您带到s 的更多出现处。

标签: vim editor


【解决方案1】:

它本身并不存在。

如果需要,您可以创建一个新映射(例如绑定到<leader>a)。将以下内容添加到您的 .vimrc 并重新启动:

nnoremap <leader>a vy/<C-R>"<CR>


" vy : copy the character under the cursor
" / : open search
" <C-R>" : paste the character
" <CR> : launch the search

然后,接下来的每个搜索都将像往常一样通过 n 键可用。

(Leader 是默认的 \ 键,但可以使用命令重新映射:set mapleader =

这不是问题的一部分,但我应该补充一点,为了便于导航,最好查看 easymotion 插件并知道它存在。

【讨论】:

  • 我宁愿使用这样的映射::nnoremap &lt;silent&gt; &lt;leader&gt;a vy/&lt;C-R&gt;='\V'.escape(getreg('"'),'\\/')&lt;CR&gt;&lt;CR&gt; 这样可以正确转义特殊字符。
  • 我的问题有很多很好的答案。我喜欢这样的 解决方案,所以这是我的选择。感谢您指出它本身并不存在,也感谢您的替代解决方案。
  • @gustafbstrom:Christian 的添加最终可能会更好,但如果只是限制自己,使用 ascii char 应该就足够了。
  • @XavierT:是的,我后来看到了。
  • 感谢@ChristianBrabandt 的补充评论。
【解决方案2】:

我不知道光标下的字符有一个与 * 等效的内置函数,但下面的映射应该满足您的要求:

nnoremap <silent> <key> "zyl:normal! f^Rz^M
nnoremap <silent> <key> "zyl:normal! F^Rz^M
nnoremap <silent> <key> "zyl:normal! t^Rz^M
nnoremap <silent> <key> "zyl:normal! T^Rz^M

^R 是用&lt;C-v&gt;&lt;C-r&gt; 获得的,^M 是用&lt;C-v&gt;&lt;CR&gt; 获得的。

【讨论】:

  • 您能澄清一下&lt;C-v&gt;&lt;C-r&gt; 的作用吗?对我来说,单个 Ctrl-R 似乎工作正常。
  • &lt;C-v&gt;&lt;C-r&gt; 用于在缓冲区中插入文字 ^R
  • 使用像&lt;c-r&gt;这样的keynotation应该可以工作并使其更具可读性。
【解决方案3】:

你可以这样做:

yl:normal! f&lt;Ctrl-R&gt;"&lt;CR&gt;

解释:

yl— 将光标下的字符拉出(复制)到" 寄存器中
:normal — 执行随后的普通模式命令
f&lt;Ctrl-R&gt;"&lt;CR&gt; — 插入" 的内容注册并运行f{char} 命令。

当然,您需要为命令创建一个映射以使其可用。

【讨论】:

    【解决方案4】:

    如果您在 * 上有一个可视化映射来搜索下一个选定的内容(例如 one),您只需输入 v*

    注意:关于如何扩展 |start| 在 SO 上有几个条目。到可视模式,一个在 vim.wikia 上。

    【讨论】:

      【解决方案5】:

      使用* 向前搜索第[count] 次出现的最靠近光标的单词。我怀疑下一个字符是否有键,但您可以/x 然后n 转到下一个x

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2011-11-25
        • 2014-04-06
        • 1970-01-01
        相关资源
        最近更新 更多