我打算surround
视觉选择,与崇高和其他编辑一样。
由于我已经安装了surround
插件,因此viwS"
确实用"
围绕选定的单词,'
同样包围
因此以下是我的尝试:
vnoremap ' S'
vnoremap " S"
vnoremap [ S[
vnoremap { S{
vnoremap ( S(
但神秘的是它会删除整行并在我尝试使用时插入quote
。
我哪里错了?如何纠正?
答案 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使用 "
当前的 。因为...
"
映射到S"
,"
映射的RHS <C-c>
vmap
... 按<C-c>
会S"+ygv
这不是你想要的。上面的规则很简单:遵循它们,一切都会很好。在这里,他们又一次,措辞略有不同:
如果要使用默认含义的命令,请使用*noremap
。
如果要使用具有重新映射含义的命令,请使用*map
。