0

いくつかのキーを再マップしたところ、.vimrc奇妙な動作が発生しています。

ビジュアル モードでテキストを選択して Delete キーを押すと、強調表示されたテキストが "" で囲まれます...

これが私の関連する部分です.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

私がしようとすると:verbose map <BS>、私は得る

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

これは、「b」(選択したテキストを削除して挿入モードに入る)に続いて Insert-mode を入力する Select-mode マッピングがあることを示しています<BS>。が再マップされないことを*意味します。b<BS>このマッピングは snipMate.vim によって定義されます。へのビジュアルモード マッピングもあります"-d。がないため*、再マッピングされます。

何かが壊れています。その 2 番目のマッピングがどこから来たのかわかりません。

たぶん、私が2番目のマッピングを持っているなら、あなたもそうします. もしそうなら、 は"(vimrc ファイルで定義された) にマップされ、 Surround.vimS"はそれで何かを行うと思います。それは多かれ少なかれ、あなたが見ているものを説明しています。結局、vimがどのモードにあるのかわからないので-d、最後に何をするのかわかりません。

:xunmap <BS>または試してみて:xnoremap <BS> "-d、それが役立つかどうかを確認してください。その場合は、vimrc ファイルの最後に追加してみてください。それでもうまくいかない場合は、VimEnter 自動コマンドの中に入れてみてください。

:help :map
:help map-modes
于 2014-02-28T03:07:41.847 に答える