私のホスティング業者は最近新しいCentOSにアップデートしましたが、私はそれを「パーソナライズ」してきましたが、今は何かが足りません。
私の家のUbuntuサーバーではforward-Word
およびbackward-Word
と ALT + RIGHT / LEFT。私はそのために何もしませんでした。私がすることもできます ALT + BACKSPACE Wordを削除します。
私の新しいCentOSで私はすることができます ALT + BACKSPACE、しかし私は得ることができません ALT + RIGHT / LEFT ワーキング! ALT + B / F 動作しますが、それは左側でのみ動作するため、受け入れられません ALT そして私の指はそれほど痩せていません。 (正しい ALT + B / F 「b」または「f」を出力するだけです)
/ etc/inputrcの一部をCentOSにコピーしようとしましたが、何もしません。
ALT または CTRL、私は気にしませんが、私は本当にショートカットが必要です。前回のCentOSにはありませんでしたが、Ubuntu以降、CentOSにはありませんでした。
私のCentOS/etc/inputrc
:
"\e[5C": forward-Word
"\e[5D": backward-Word
"\e[1;5C": forward-Word
"\e[1;5D": backward-Word
私のUbuntu/etc/inputrc
:
"\e[1;5C": forward-Word
"\e[1;5D": backward-Word
"\e[5C": forward-Word
"\e[5D": backward-Word
"\e\e[C": forward-Word
"\e\e[D": backward-Word
どういう意味かわからない!?とは [1;5C
キー用??
あなたの質問のおかげで、私はついにいくつかの読書をし、私の理解を深めました、乾杯!
したがって、非常に優れた情報源はman readline
です。さまざまなinputrc
ファイルで指定されたキーバインディングは、BASHreadlineライブラリの動作方法を制御します。 readlineのマンページによると、シンボリックキー名またはエスケープシーケンスのいずれかを使用できます。
Key Bindings
The syntax for controlling key bindings in the inputrc file is
simple. All that is required is the name of the command or
the text of a macro and a key sequence to which it should be
bound. The name may be specified in one of two ways: as a sym‐
bolic key name, possibly with Meta- or Control- prefixes, or
as a key sequence. The name and key sequence are separated by
a colon. There can be no whitespace between the name and the
colon.
When using the form keyname:function-name or macro, keyname is
the name of a key spelled out in English. For example:
Control-u: universal-argument
Meta-Rubout: backward-kill-Word
Control-o: "> output"
マニュアルページには、デフォルトの構成ファイルが~/.inputrc
であるとも記載されているため、そこにバインディングを配置することをお勧めします。
通常の文字キーを使用する場合(たとえば Control-g)、Control-g: forward-Word
は正常に機能します。矢印キーは難しいです。矢印キーのキーnameを見つけようとしましたが、失敗しました。私が試したもの(left-arrow
、left
、:left
)はどれも機能しなかったため、エスケープシーケンスでスタックしているようです。
残念ながら、正確なエスケープシーケンスはターミナルエミュレーター間で異なります(そのため、Ubuntu inputrcには複数の行がありました)。お気に入りの端末が使用しているエスケープシーケンスを見つけるには、read
を実行してから、目的のキーシーケンスを入力します。terminator
、xterm
、およびgnome-terminal
に、 Control-Left 与える:
$ read
^[[1;5D
aterm
:
$ read
^[Od <-- that is a capital O not a zero (0).
少し実験して、^[[D
が Left^[[1;5D
は Control-Left。最初の^[
は Esc ここで使用されているキーは、エスケープシーケンスを表すために使用されていると思います。
いずれにせよ、バインドする Control-Left すべての人に役立つ方法でforward-Word
に、これらの行を~/inputrc
に追加しました。
"\e[1;5D": backward-Word
"\eOd": backward-Word
私が完全に理解していない理由のために、 Control\e
で表されます。これはshould Esc。
上記のすべての端末で機能する最後の~/.inputrc
ファイルは次のとおりです。
"\e[1;5D": backward-Word
"\eOd": backward-Word
"\e[1;5C": forward-Word
"\eOc": forward-Word
Iterm2でそれを実行して、任意のホストに接続したときに機能するようにする方法。
注:これを書くのは、別の質問( https://superuser.com/questions/1042937/getting-ctrlarrows-to-move-Word-at-a-time- on-newest-iterm2?rq = 1 )はこの質問に重複としてリンクしていますが、この質問はIterm2でこれを行う方法に答えていないため、実際には重複していません。
OS Xを使用していて、Iterm2を使用している場合は、マッピングできます Alt/Ctrl+→ (right arrow) そして Alt/Ctrl+← 標準のreadlineコマンドに Meta+F そして Meta+B。以下の例では、エスケープキーがメタであると想定しています。これを行うには、Iterm2を開きます。
^[
はエスケープのreadlineシーケンスです。このエントリマップ Opt+→ に Esc+F (多分 Alt+F 他の端末で)ショートカットを非エスケープシーケンスにマップする方法(Ctrl、 Alt、 Cmdなど)
23
/0x17
。質問ありがとうございます。 CentOS 7のPuTTYでこの問題が発生し、$if mode=emacs
条件内にこれを追加することで解決しました。
# for PuTTY
"\e\e[C": forward-Word
"\e\e[D": backward-Word
設定を有効にしました with Ctrl + X その後 Ctrl + R