Vim 7.3.1-762、mintty 1.1.2(xterm)、cygwin、Windows XPでは、挿入モードマップ<F4>
目的のキーストロークを一度に実行しますが、別のときに自分自身を挿入します。この不確定な動作は、<F4>
を保持している場合に特に発生します キーが押されました。
複数のVim、ターミナル、およびオペレーティングシステムのバージョン間で動作を予測可能にするにはどうすればよいですか?
これは、~/.vimrc
で定義したコードです。 ファイル、それは私に関連しているようです:
set compatible
set timeout
set ttimeout
set timeoutlen=1000
set ttimeoutlen=100
imap <F4> <C-><C-O>:set relativenumber! relativenumber?<CR>
<F4>
の上のファンクションキーにマッピングを割り当てた場合 、例: <F5>
、<S-F7>
など。私は上記の行動を経験していません。また、timeout
を無効にした場合 set notimeout
のオプション うまくいくようです。
承認された回答:
<F4>
を作成しました キーは、map <expr>
を使用することにより、すべてのモードで機能するようです。 式は次のようにマップされます:
MapOptToggle <F4> relativenumber
MapOptToggle! <S-F4> number
command! -bang -nargs=+ MapOptToggle call <SID>MapOptToggle(<bang>0, <f-args>)
function! s:MapOptToggle(bang, key, opt)
function! s:ToggleOpt(opt)
if mode() =~# 'vno?' || !&showmode
exec 'set ' . a:opt . '! ' . a:opt . '?'
else
exec 'set ' . a:opt . '!'
endif
redraw
return ''
endfunction
let a='noremap'
let b='<unique> <silent> <expr> ' . a:key . ' <SID>ToggleOpt(' . string(a:opt) . ')'
exec a . ' ' . b
exec a . '! ' . b
exec 'set ' . (a:bang ? 'no' : '') . a:opt
endfunction
しかし、それでも私の答えは、imap
の予測できない動作を説明していません。 挿入モードマップ。
Linux – Alpine Linuxにパッケージをインストールするときにプロンプトが表示される自動はい?
Linux –Linuxが「init=/ bin / bash」を許可するのはなぜですか?