私はvimの基本的な設定をセットアップして、自分にとってより便利なものにしようとしています。私がやろうとしていることの1つは、Shift + Tabをリテラルのタブ文字にマップすることです。私のvim構成では、タブがデフォルトでスペースで展開されるように設定されているためです。 この参照 を使用してタブ文字にマップしようとしましたが、サイコロはありません。
挿入モードがアクティブなときにShift + Tabキーを押しようとすると、vimは大文字のZを約1秒間出力し、それを削除して、システムエラーのビープ音で挿入モードを終了します。私はすでに^ Vでshift + tabストロークをテストし、リファレンスで説明されているように^ [[Zをvimに出力するので、OSがキーストロークを乗っ取っているわけではありません。何がこれを引き起こしているのか正確にはわかりません。入力をいただければ幸いです。
私の.vimrc:
" Few basic settings first; I like syntax highlighting & line numbers
syntax on
set number
" Some settings with the list option
" I like to see non-printing characters like Tab & CR
set listchars=tab:▸\ ,eol:¬
set list
" Set tab behaviours: 4 spaces wide, expand <Tab> and >> with spaces
set expandtab
set tabstop=4
set softtabstop=4
set shiftwidth=4
" This line maps shift+tab to a literal tab character
" Because I sometimes need a literal tab
set <s-tab>=
最後の行は、set list
がオンのときのvimの▸文字を示しています
これを試して:
:set t_kB=^[[Z
^[
文字を文字通り入力しません。実際のエスケープシーケンスを取得するには、 control-v 次に、Escキーを押します。 t_kB
オプションは<S-Tab>
オプションと同じであることに注意してください。
ただし、これは<S-Tab>
を<Tab>
にマップするのではなく、これら2つのキーを押したときに端末が送信するエスケープシーケンスをVimに通知するだけです。ただし、この時点で、<S-Tab>
を<Tab>
にマップできます。
:noremap <S-Tab> <Tab>
'expandtab'
のようなオプションが設定されているときにVimにリテラルタブ文字を挿入させるには:
:inoremap <S-Tab> <C-V><Tab>