0

我刚刚重新映射了我的一些键,我.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"

我知道很多这种配置是个人喜好,所以欢迎任何建议,但更重要的是,为什么我会出现这种行为?

4

3 回答 3

1

它对我有用,所以它可能是某种冲突。我对 Vim 还是比较陌生,但到目前为止我不得不多次解决插件和配置冲突。插件和用户配置都可能相互影响,因此您有时可能会遇到非常奇怪的行为。

对我有用的是逐渐消除问题的可能原因。你可以重命名你的vimrc文件以防止 Vim 找到它,然后看看问题是否仍然存在。如果没有,则说明vimrc您的插件无法正常工作。在这种情况下,请尝试注释掉您的行vimrc以缩小问题的原因(确保创建备份)。

如果问题不是由您的 引起的vimrc,则可能是插件冲突。尝试从pluginVim 插件路径中的文件夹中移走插件文件,看看问题是否仍然存在。

于 2014-02-27T20:42:16.787 回答
1

当我尝试时,:verbose map <BS>我得到

s  <BS>        * b<BS>
    Last set from ~/<...>/after/plugin/snipMate.vim
x  <BS>          "-d

这告诉我有一个 Select-mode 映射将输入一个“b”(删除选定的文本并进入插入模式),然后是一个 Insert-mode <BS>;不重新映射遗嘱的*方式;b<BS>这个映射是由 snipMate.vim 定义的。还有一个可视模式映射到"-d. 由于没有*,它将被重新映射。

有些东西坏了:我不知道第二个映射是从哪里来的。

也许如果我有第二个映射,你也有。如果是这样,那么将"被映射(在您的 vimrc 文件中定义)到S",我猜环绕.vim 对此做了一些事情。这或多或少地解释了你所看到的。毕竟我不确定 vim 处于什么模式,所以我不确定-d最后会做什么。

尝试:xunmap <BS>:xnoremap <BS> "-d看看它是否有帮助。如果是这样,请尝试将其放在 vimrc 文件的末尾。如果这不起作用,请尝试将其放在 VimEnter 自动命令中。

:help :map
:help map-modes
于 2014-02-28T03:07:41.847 回答
0

作为记录,我使用的是最新的 MacVim (Snapshot 72),当我输入

:详细地图<BS>
输出是:

v <BS>  "-d

我做了@benjifisher 的建议并添加了以下内容:

xnoremap <BS> "-d  

到我的 .vimrc。现在的输出是

x  <BS>      *"-d  
s  <BS>       "-d  

和 delete 现在按应有的方式工作。那谢谢啦!

于 2014-02-28T22:13:33.763 回答