コンソールでCTRL +矢印キーを使用して次または前の単語にジャンプするにはどうすればよいですか?


12

端末エミュレーションアプリケーションでは、CTRL+ Left/ Right矢印キーを押すと、1つの単語から前または次の単語にジャンプします。Linuxコンソールでも、テキストモードでもフレームバッファーモードでも同じ機能を使用できますか?

私の構成では、CTRL+矢印キーはエスケープ文字シーケンスに変換され、解釈されません。

回答:


8

これは、端末がCtrl+ Leftvs に対して異なるエスケープシーケンスを送信する場合にのみ可能ですLeft。これは、Linuxコンソールのデフォルトでは当てはまりません(少なくとも私のマシンでは)。キーマップを変更することで、そのようにすることができます。変更する正確なファイルは、ディストリビューションによって異なります。Debian lennyでは、変更するファイルは/etc/console/boottime.kmap.gzです。次のような行が必要です

control keycode 105 = F100
string F100 = "\033O5D"
control keycode 106 = F101
string F101 = "\033O5C"

X端末エミュレータと同じエスケープシーケンスを選択することもできます。制御配列は、タイプが何であるかを知るためにCtrl+ V Ctrl+ Leftシェルで。これは(私のマシン^[O5D^[は)エスケープ文字を挿入します。キーマップファイルで\033、エスケープ文字を表します。

エスケープシーケンスをデコードするようにターミナルでアプリケーションを構成することは、別の問題です。


"\033O5D"コードの入手方法を説明するだけで、keycode 105F100コードの入手先は完全に省略しています。その上、ctrl + DownとCtrl + Up を取得^[[1;5B^[[1;5Aます。どのように1;部品を処理すればよいですか?
Martin Vegter

1
@MartinVegter既存のファイルのキーコードを確認するか、showkeyプログラムを使用します。1;パーツは他のパーツと変わりません"\033[1;5B"
Gilles「SO-邪悪なことをやめよ」16/4/20

OKはkeycode 105を使用して見つけることができますshowkey。しかし、どこで入手しましたF100か?
Martin Vegter

@MartinVegterまだ使用されていないものを選択してください。キーコードごとに異なるもの(私は私の回答のタイプミスを修正しました)。
Gilles「SO-邪悪なことをやめよ」

24

EmacsスタイルのショートカットAlt+ fAlt+はb、デフォルトで、シェルのようなすべてのreadlineを使用するコマンドラインプログラムで機能します。


2

vimをコマンドラインエディターとして設定し、Escキーを押してvimスタイル(進む、戻る、終了、$、0など)をジャンプできます。


-1

空の~/.inputrcファイルがあるDebianでこの問題が発生しました。このファイルを削除して問題を修正しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.