Vim:环绕插件的自定义映射环绕视觉选择?

时间:2013-12-15 15:26:16

标签: vim vim-plugin dotfiles

我打算surround 视觉选择,与崇高和其他编辑一样。

由于我已经安装了surround插件,因此viwS"确实用"围绕选定的单词,'同样包围

因此以下是我的尝试:

vnoremap ' S'
vnoremap " S"
vnoremap [ S[
vnoremap { S{
vnoremap ( S(

但神秘的是它会删除整行并在我尝试使用时插入quote

我哪里错了?如何纠正?

1 个答案:

答案 0 :(得分:1)

您使用*noremap错误:

当您使用*noremap时,您要求Vim使用 S的原始含义。

当您使用*map时,您要求Vim使用 S的当前含义。

vnoremap如果您的映射执行的命令应该是本机命令但是您正在使用已经由插件重新映射的命令,则表示正常。您应该使用*map代替。

此外,vmap涵盖可视选择模式:您的映射可能更准确。

因此...

xmap ' S'
xmap " S"
xmap [ S[
xmap { S{
xmap ( S(

(编辑)

<C-c>的问题恰恰相反:您正在使用vmap,因此您告诉Vim使用 "当前的 。因为...

  1. 您已将"映射到S"
  2. 您在"映射的RHS
  3. 中使用<C-c>
  4. 并且您使用vmap ...
  5. <C-c>S"+ygv这不是你想要的。上面的规则很简单:遵循它们,一切都会很好。在这里,他们又一次,措辞略有不同:

    • 如果要使用默认含义的命令,请使用*noremap

    • 如果要使用具有重新映射含义的命令,请使用*map