<s-f2>
マッピングを実行するためにキーを押すと、nnoremap <s-f2> :set number!
Vimは上記の「挿入」モード()を開き、文字列をO
入力します。1;2Q
完全なターミナルキーコードを表示するには(「通常」モードで途中で食べないで)、<c-v><s-f2>
「挿入」モードを押してからインポートします^[O1;2Q
。文字^[
はどこにありますか<esc>
?
読んだ後でも「ターミナルVimからのショートカットキーコードマッピング」^[O1;2Q
ターミナルキーコードが<s-f1>
Vimコードにマッピングされていない理由はわかりません。だから私のファイル~/.vimrc
に次の関数を定義しました。
function! s:Mod_fix_shift_fkey()
let a=0
let b='PQRS'
while a < 4
exec 'set <s-f' . (a + 1) . ">=\eO1;2" . b[a]
let a+=1
endwhile
endfunction
<s-f1>
これを呼び出してからへの移動機能キーを変更し、バインドされた<s-f4>
マッピングが<s-f2>
突然機能しました。
誰かがこれを説明できますか?
<s-f5>
また、次から移動したファンクションキーを変更する必要がありました<s-f12>
。
"...
let a=5
let b='1517181920212324'
let c=0
while a < 16
exec 'set <s-f' . a . ">=\e[" . b[c : c + 1] . ';2~'
let a+=1
let c+=2
endwhile
"...
そして、From <c-s-f1>
to<c-s-f4>
と<c-s-f5>
To<c-s-f12>
制御転送機能キーです。たとえば、次のようになります。
" ...
exec 'map <esc>O1;6' . b[a] ' <c-s-f' . (a + 1) . '>'
" ...
exec 'map <esc>[' . b[c : c + 1] . ';6~ <c-s-f' . a . '>'
" ...
ベストアンサー1
:set <Key>
特別なワイルドカード構文を使用して、Vimに自動的に認識させることができます。xterm-スタイル修飾キー:
if &term =~ '^gnome'
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
execute "set <xHome>=\e[1;*H"
execute "set <xEnd>=\e[1;*F"
execute "set <PageUp>=\e[5;*~"
execute "set <PageDown>=\e[6;*~"
execute "set <F1>=\eOP"
execute "set <F2>=\eOQ"
execute "set <F3>=\eOR"
execute "set <F4>=\eOS"
execute "set <xF1>=\eO1;*P"
execute "set <xF2>=\eO1;*Q"
execute "set <xF3>=\eO1;*R"
execute "set <xF4>=\eO1;*S"
execute "set <F5>=\e[15;*~"
execute "set <F6>=\e[17;*~"
execute "set <F7>=\e[18;*~"
execute "set <F8>=\e[19;*~"
execute "set <F9>=\e[20;*~"
execute "set <F10>=\e[21;*~"
execute "set <F11>=\e[23;*~"
execute "set <F12>=\e[24;*~"
endif
:help xterm-function-keys
とを参照してください:help xterm-modifier-keys
。