0

vim-I use に単一の文字を挿入するシステムがあります:nmap <Space> i_<Esc>r。しかし、何らかの理由で、これは私のエスケープの再マッピングに干渉しているようです. でエスケープをリマップしまし:imap kj <Esc>た。

を押すたびにkj、vim_はカーソルの直前に を挿入し、スペースを押したように変更します。これらのものがこのように相互作用している理由がわかりません。誰かが問題に光を当てることができますか? それは有り難いです。

これが私のvimrc全体です

"general settings
syntax on
filetype plugin on
set number
set smd
set ru

"Leader
let mapleader=','
nmap <Leader>w :w<Enter>
nmap <leader>e :wq<Enter>
nmap <leader>q :q!<Enter>

"remappings
nmap ; :
imap kj <Esc>
nmap <Space> i_<Esc>r

"au comands
au Filetype python source ~/.vim/scripts/python.vim
au Filetype ruby source ~/.vim/scripts/ruby.vim
au Filetype c source ~/.vim/scripts/c.vim
4

2 に答える 2

2

マッピングの末尾に空白がある可能性があります。*map@glts が提案するように変更することに加えて*noremap、テキストの挿入などから、カーソルを 1 ポジション前に移動するだけの動作 (スペースのデフォルト アクション) に変更する可能性が高く、@glts によって参照されるリンクで説明されている別の理由で実行する必要があります。次のいずれかを実行して、末尾の空白を強調表示します。

  1. set list listchars+=trail:--: これは、末尾の空白の代わりに特別に強調表示されます。
  2. 検索を実行: / $<CR>( /<Space>$<CR>)。
  3. 次を使用して検索を実行しますmatch(vimrc に入れることができます): let g:trailing_match_nr=matchadd('Error', '\s\+$'): これにより、末尾の空白がError強調表示グループで強調表示されます。

これらの方法のいずれかで強調表示された不要な末尾の空白をすべて削除してください。個人的には前者の方が好きです。

于 2013-07-05T03:13:44.073 に答える