繁体   English   中英

map Vim 冒号搜索和替换命令如何仅与视觉选择一起使用?

[英]How do I map Vim colon search and replace command to work just with visual selection?

有时我想替换多行而不是整行的一些文本,所以我打开可视模式并突出显示我要替换的文本。 但是,我需要添加这个烦人的\%V ,我总是忘记它来替换选择中的文本而不是整行中的文本

:'<, '>s/\%Vold/new/g

有没有办法 map 正常替换命令

:'<, '>s/old/new/g

到上面显示的那个,这样我就不需要每次都记住那个 V 了吗?

谢谢

我尝试通过以下方式在 vimrc 文件中使用 cmap 命令:

cmap '<, '>s/* '<, '>s/\%V*

但这当然行不通,因为我应该输入要搜索和替换的文本而不是星号来结束搜索和替换命令。

映射包含三个基本部分:

  • 映射命令,
  • “左侧”(LHS),
  • 和“右侧”(RHS)。

LHS 是您要按下的键序列/组合,而 RHS 是您希望 Vim “按下”而不是 LHS 中的键序列的不同键序列。 您将一个键序列“映射”到另一个键序列。

从根本上说,RHS 是一个宏:一系列击键,“就像”您自己按下它们一样,但它们之间没有任何延迟。 因此,RHS 实际上只是一堆您厌倦了一遍又一遍的击键。

映射的主要用途是减少重复性。 您认为您经常按虚构序列sdlusdrosydtsodsd和 map 将其全部按<F5>以提高效率。

在这种情况下…

  • 当前模式是可视模式,所以映射必须是可视模式映射。

    这使得:xmap:xnoremap成为正确的映射命令 让我们:xnoremap

  • 您想要抽象掉的重复键序列是:

     :s/\%V

    那是你的 RHS

    (请注意,范围'<,'>会自动为您插入,因此可以忽略。)

  • 你想按的键序列是,比方说...... <F5>

    那是你的 LHS

现在您有了映射命令、LHS 和 RHS,构建映射非常容易:

:xnoremap <F5> :s/\%V

地图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM