web-dev-qa-db-ja.com

vimでs-tabをマッピングする

私は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の▸文字を示しています

4
Calyo Delphi

これを試して:

: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>
2
Heptite