私のマッピングを含めるこのAlt
inを使用すると動作しません。彼らは非常にうまく動作します。そのようなマッピングの例vim
urxvt
gvim
map <silent> <A-h> <C-w><
挿入モードでを入力すると、印刷のみが行わAlt-h
れますh
。埋め込みマッピングをvimで機能させるにurxvt
は、どのように設定する必要がありますか?Alt
私はUbuntuを使用しています。
このように、urxvtで修飾子をsuperに設定しました。そのため、解決策のどれも私には効果がありませんでした。提案されたソリューションが機能するには、修飾子をAltに設定する必要があります。
答え1
Vimでマッピングするときに<A-x>
xが印刷可能文字(カーソルや矢印キーなど)の場合、Vimはその文字に8番目/上位ビットセット(ASCII値に128を追加する)があると予想するように指示します。
あなたの例では、<A-h>
è を入力すると Vim がマッピングをトリガすることを意味します。 hのASCII値は104(バイナリ01101000)で、対応する数値のビット8を設定すると、èのASCII値は232(バイナリ11101000)です。
urxvtや他の多くの端末で発生する現象は、Altキーが「128追加」ではなく、Escape文字が前に付けられた入力文字を送信するように設定されていることです。この場合、<Esc>h
è の代わりに Vim がシードされるため、マッピングは実行されません。
これにより、2つのオプションが残ります。 Alt修飾子を使用して他の操作を実行するように端末を再構成します。または<Esc>x
Vimにさらにマッピングを追加することもできます<A-x>
。
答え2
ASCII以外のテキストを入力する必要がある場合は、vim
マッピングをからに変更してみ<A-x>
てください<Esc>x
。
ASCIIテキストのみを入力する場合は、オプションとをurxvt
使用して実行できます。--meta8
vim
set termencoding=latin1
試してみる他の回避策は次のとおりです。
答え3
恥ずかしい投稿ですねredditからu/jbaumy93が提供した回答。
私が今使っているのがまさにこれです。
~/.Xresources
私はいいえエンコーディングに設定するURxvt.meta8: true
と、設定が壊れます。を使用すると、set termencoding=latin
電力線の文字が混乱します。私はEsc
@graywhが投稿したマッピングを使用し、上記の回答を使用することにしました。
また、修飾子がAlt
のように設定されていることを確認してくださいurxvt
。私はsuper
修飾子として使用してきましたが、公開されたソリューションのどれも機能しません。
これは私の断片です。vimrc
nnoremap <silent> <A-h> <C-w><
nnoremap <silent> <A-k> <C-w>-
nnoremap <silent> <A-j> <C-w>+
nnoremap <silent> <A-l> <C-w>>
function! Altmap(char)
if has('gui_running') | return ' <A-'.a:char.'> ' | else | return ' <Esc>'.a:char.' '|endif
endfunction
if $TERM == 'rxvt-unicode-256color'&&!has('gui_running')
set ttimeoutlen=10
augroup FastEscape
autocmd!
autocmd InsertEnter * set timeoutlen=400
autocmd InsertLeave * set timeoutlen=2000
augroup END
execute 'nnoremap <silent>'.Altmap('h').'<C-w><'
execute 'nnoremap <silent>'.Altmap('k').'<C-w>-'
execute 'nnoremap <silent>'.Altmap('j').'<C-w>+'
execute 'nnoremap <silent>'.Altmap('l').'<C-w>>'
endif