私はCtrl-n
の大ファンではないので、Ctrl-Space
を使用できるようにしたいと思います。どうすればそれができるのでしょうか?
if has("gui_running")
" C-Space seems to work under gVim on both Linux and win32
inoremap <C-Space> <C-n>
else " no gui
if has("unix")
inoremap <Nul> <C-n>
else
" I have no idea of the name of Ctrl-Space elsewhere
endif
endif
Ctrl + Spaceマッピングも好きです。
" Remap code completion to Ctrl+Space {{{2
inoremap <Nul> <C-x><C-o>
あなたの場合あなたが望む:
inoremap <Nul> <C-n>
たとえば、Ctrl-Eにマップする場合は、次のようになります。
inoremap <C-E> <C-N>
の問題 Ctrl-Space ほとんどの端末はそれを単にスペースと見なすということです。 X内でターミナルプログラムを使用していると仮定します。別のものを使用している場合は、関連する代替品を自分で用意する必要があります。
Bashのreadlineには通常 Ctrl-V 「次のキーをリテラルとして扱う」にマップされます。だから押す Ctrl-V 次に、bashコマンドラインのHomeは、行の先頭に移動するのではなく、コマンドラインに^[[H
などを挿入します。を押してみてください Ctrl-V その後 Ctrl-Space。おそらくあなたはただスペースを見るでしょう。
その場合、xmodmapをだますか、独自の/ usr/share/X11/xkb/*ファイルを作成して、を押したときに別の何かを出力するようにXに指示する必要があります。 Ctrl-Space。 Firefoxのようなプログラムは気にしません。どのベースキーが押されているかを検出し、どの修飾子が押されているかを自分で把握します。しかし、ほとんどの端末ベースのプログラムは Ctrl-Space Xにスペースを扱うように指示しない限り、スペースとして Ctrl-Space 別の方法で。
Xmodmapだけでこの変更を行うことができるとは思えません。おそらく、低レベルの/ usr/share/X11/xkb/*ハッキングを行う必要があります。これは複雑で、そもそもXを使用しているかどうかさえわからないので、そのままにしておきます。
Urxvtのような一部の端末では、独自のキーバインディングを指定できます。 Firefoxのように、Xを構成するために特別なことをしなくても、スペースであるかコントロールスペースであるかを知ることができます。したがって、を押すと「\ 033I_TYPED_CONTROL_SPACE_DAMMIT」を出力するようにurxvtに指示できます。 Ctrl-Space。そして、vimにthatを<C-N>
にマップするように指示できます。
編集:Ctrl-Spaceが\0
を出力するために使用されたことを忘れました(キーボードの別の場所に再マップしました)。その場合、上記で説明した複雑さはすべて不要です。私が言ったことは、次のような、よりエキゾチックなマッピングを使用したい人に当てはまります。 Ctrl-コロンまたは Alt-Space。