我只是重新映射了.vimrc
中的一些键,我得到了一些奇怪的行为。
当我在可视模式下选择文本并点击删除键时,它会用“”...
围绕突出显示的文本以下是我.vimrc
"Using Vundle
Bundle 'tpope/vim-surround'
let mapleader= ","
let g:mapleader= ","
set backspace=eol,start,indent
"""""""""""""""""""""""""""""""""""""""""""""""""""
" => Surround Vim Shortcuts
"""""""""""""""""""""""""""""""""""""""""""""""""""
vmap ' S'
vmap " S"
vmap { S{
vmap } S}
vmap ( S(
vmap ) S)
vmap [ S[
vmap ] S]
" tags
vmap < S<
vmap > S>
" addressing the problem introduced by tags
vnoremap << <
vnoremap >> >
map <leader>s' ysiw'
map <leader>s" ysiw"
map <leader>s( ysiw)
map <leader>s[ ysiw]
map <leader>s{ ysiw}
map <leader>d' yss'
map <leader>d" yss"
map <leader>d( yss)
map <leader>d[ yss]
map <leader>d{ yss}
vmap <Leader>S <Plug>VSurround
示例:
def persisted?
false
end
# I select it in visual mode, hit delete and it becomes:
"def persisted?
false
end"
我知道很多这种配置都是个人喜好所以欢迎任何建议,但更重要的是,为什么我会遇到这种情况?
答案 0 :(得分:1)
这对我有用,所以这可能是某种冲突。我对Vim还是比较新的但是我现在不得不多次解决插件和配置冲突。插件和用户配置都可能相互影响,因此有时您可能会遇到非常奇怪的行为。
为我工作的是逐步消除问题的可能原因。您可以重命名vimrc
文件以防止Vim找到它,然后查看问题是否仍然存在。如果没有,则vimrc
中的某些内容与您的插件不兼容。在这种情况下,请尝试评论vimrc
的行以缩小问题的原因(确保创建备份)。
如果问题不是由vimrc
引起的,则可能是插件冲突。尝试从Vim插件路径中的plugin
文件夹中移走插件文件,看看问题是否仍然存在。
答案 1 :(得分:1)
当我尝试:verbose map <BS>
时,我得到了
s <BS> * b<BS>
Last set from ~/<...>/after/plugin/snipMate.vim
x <BS> "-d
这告诉我有一个选择模式映射将输入“b”(删除所选文本并进入插入模式),然后是插入模式&lt; BS&gt; ; *
表示b<BS>
不会被重新映射;此映射由snipMate.vim定义。还有一个到"-d
的可视模式映射。由于没有*
,因此会重新映射。
有些东西被破坏了:我无法弄清楚第二张映射的来源。
也许如果我有第二个映射,那么你也是。如果是这样,那么"
会被映射(在你的vimrc文件中定义)到S"
,我猜这个环绕.vim做了什么。这或多或少解释了你所看到的。我不确定vim的模式是什么,所以我不确定最后-d
会做什么。
尝试:xunmap <BS>
或:xnoremap <BS> "-d
,看看是否有帮助。如果是这样,请尝试将其放在vimrc文件的末尾。如果这不起作用,请尝试将其放在VimEnter自动命令中。
:help :map
:help map-modes
答案 2 :(得分:0)
对于记录我正在使用最新的MacVim(快照72),当我输入
:verbose map <BS>
时输出为:
v <BS> "-d
我做了@benjifisher建议并添加了一行:
xnoremap <BS> "-d
到我的.vimrc。现在的输出是
x <BS> *"-d
s <BS> "-d
和删除现在按照它应该的方式工作。所以......谢谢!