Ctrlキーを押しながら、単語/文字列間でカーソルを移動します


84

私はCTRL、左矢印キーと右矢印キーを使用するときに、キーを使用してより速く移動することに慣れています(一度に1文字ではなく、単語の終わりに移動します)。

どういうわけかbashでそれを行うことはできますか?

私はおそらくそれをコーディングすることができましたが、もっと簡単な/すでに行われた何かがあるかどうか疑問に思いました。

回答:


93

デフォルトのreadlineキーバインディングでは、ALT+Bは1ワード戻り、ALT+Fは1ワード進みます。

デフォルトのUbuntuセットアップはCTRL、あなたが慣れているように+矢印を追加で提供します。これらは/etc/inputrc次のように指定されています。

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\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

なぜ3つ必要なのかわかりません...


20
@bryan_ruiz:異なるキーボード(ターミナルエミュレーターなど)は異なるシーケンスを出力します。シーケンスを表示するには、Ctrl-vを押してからキーを押します。PuTTYの私にとって、Ctrl-v Ctrl-RightArrow^[OCは、あなたと同じものを私に与えます。ではxtermI取得^[[1;5トーマスのと同じです。
追って通知があるまで一時停止します。

7
~/.inputrc代わりに編集して行う方がよいでしょう
svassr 2013年

1
これなしでどれだけ長く生きたか信じられない。
ライアン

3
〜/ .inputrcを編集すると、「システム」システム(/ etc / inputrc)のロードが停止する場合があります。また、「set -o」設定-「set-o emacs」は、「set -o vi」などではなく、コマンドラインでemacsスタイルのキーバインディングを提供する必要があることに注意してください(これを行った後、を押す必要がありますwまたはb)を使用する前のESC。
David Goodwin

4
@DavidGoodwin少し検索した後、追加$include /etc/inputrcするとシステムinputrcファイルもロードされます。
SirGuy

42

Thomasが説明したように、バインディングをに追加できます/etc/inputrc

ログインするたびに読み込まれるようにする別の方法は、次のように入力することです~/.bashrc

#use ctl keys to move forward and back in words
bind '"\eOC":forward-word'
bind '"\eOD":backward-word'

cat > /dev/null キーボードが送信している文字を確認するために使用できることを学びました。たとえば、CTRL +右矢印は次のように表示されます。

^[OC

ここ^[で、は同じです。コマンドの\e コードのbind出所です。

次のようなバインディングを検索することもできます。

bind -p | grep forward-word

このすべてはかなりすごいです、そして私は私がバッシュのもう少しの力を見つけてうれしいです。


6
これはbashにのみ影響すると思いますが、このinputrcソリューションは、Pythonインタープリター、他のほとんどのシェルなど、readlineを使用する他のプログラムにも適用されます。~/.inputrcrootがない場合、またはすべてのユーザーにコマンドを適用したくない場合は、コマンドを挿入することもできます。
トーマス

何らかの理由で、これは私が上記の行の順序を入れ替えたときにのみ機能しました。さらに注意してください。Windows8.1のパテの背後でUbuntu14.04LTSを使用しています。
Rebecca Dessonville 2015年

2
特にI learned that you can use cat > /dev/null to look at the characters that your keyboard is sending。の場合は+1 。#TIL
Sungam

3
read入力してEnterキーを押すだけで、と同じ効果を得ることができcat > /dev/nullます。私は怠け者なので、タイピングの少ないソリューションが好きです。:)
theglossy1 2017年

ctrl + 4が私の猫をクラッシュさせます(^ /を送信します)
user10404 9518年

4

ホームディレクトリに.inputrcがあると、ctrl + leftがUbuntuで機能しなくなります(たとえば)。

すべてを機能させるには、〜/ .inputrcに以下を追加します。

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

f.kowalのクレジット

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