【问题标题】:vim mapping keys to surround words/lines with <p></p>vim 映射键以用 <p></p> 包围单词/行
【发布时间】:2011-07-11 15:14:24
【问题描述】:

我正在尝试映射键 ALT+SHIFT+W 以使用 &lt;p&gt;&lt;/p&gt; 标签包围文本/行。

现在我的 _vimrc 文件中有这个:

map <A-S-w> c<p><C-R>"<p><ESC>

但这会产生:

<p>Some text.<p></p></p>

我做错了什么?我必须在我的地图上跳过第一个“&lt;p&gt;”?

谢谢

【问题讨论】:

标签: vim surround


【解决方案1】:

你写错了映射。正确的是:

map <A-S-w> c<p><C-R>"</p><ESC>

【讨论】:

  • 谢谢!我觉得很愚蠢..但是我有一个自动关闭那个 p 的插件,所以这是那里的主要问题..现在我得到了这个工作。
  • @Homem Robo, @black 你们都应该使用nore (noremap)。如果您这样做了,则不会出现此问题,因为尚未调用该插件映射。这是编写 any 映射时的一般规则:使用 nore 除非 {rhs} 仅包含 known remapped 键序列(如 &lt;Plug&gt;Something )。 已知重新映射,否则您可能会遇到麻烦。
  • 完成! noremap &lt;A-S-w&gt; c&lt;p&gt;&lt;C-R&gt;"&lt;/p&gt;&lt;ESC&gt;
【解决方案2】:

这已经得到解答,但我可以建议一个不覆盖默认寄存器的版本:

vnoremap <A-S-w> <ESC>`>a<\p><ESC>`<i<p><ESC>

它利用 标记转到最近的视觉选择。请注意,vnoremap 比基本的 map 更安全,因为 (a) 它仅限于可视模式,并且 (b) 它是非递归的。

【讨论】:

  • 我是 vim 的新手,所以我现在还没有在我的工作流程中获得可视化模式。我必须更多地学习vim。不过谢谢你的提示。
  • 视觉选择是通过按vV&lt;c-v&gt; 选择的任何内容,所以我认为这就是您所做的。使用noremap 是一个好习惯,除非有充分的理由不使用。
  • 实际上我现在遇到了 vim 模式的问题。我的 vimrc 上有这个:表现 mswin。这不好对吧?
  • behave mswin 没什么问题(虽然我没用)。将&lt;c-v&gt; 重新映射到粘贴的副作用之一,因此块可视化模式被重新映射到&lt;c-q&gt;
猜你喜欢
  • 1970-01-01
  • 2010-10-20
  • 2016-04-21
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 2020-03-12
相关资源
最近更新 更多