LoginSignup
20
18

More than 5 years have passed since last update.

シェルのコマンドライン上で自分の移動したい位置にカーソルを瞬時に移動する方法

Last updated at Posted at 2012-12-31

例えば '■' をカーソルとして

$ grep tset /var/log/php.log■

って入力したとするじゃないですか。ここで、grep の第一引数がたいぽってることに気づきます。それを直したくて十字キーの左ボタンおしっぱにしてカーソルを移動させるのもいいですが、一発でtsetのところまで行きたいじゃないですか。そういう時はおもむろにControl+rを押してから、eを押します。すると

$ grep ts■et /var/log/php.log

カーソルがこの位置に移動します。Emacsライクに。ここでTabを押すと検索が終了してカーソルがこの位置で普通の入力モードに戻ります。
便利ですね!これで本エントリのメインディッシュは終わりです。

その他よく使う検索を終了する入力としてControl+b(カーソルを左に移動), Control+f(カーソルを右に移動), Control+d(カーソル右の文字(今回の場合e)を削除)などがあります。
注意点としては、EmacsだとEnterを押すと検索が終了するんですが、シェルでEnterを押すとそのコマンドを実行してしまいます。また、Control+hは検索するために入力した文字列の削除になります。

また、検索を終了させずにもう一度Control+rを押すと、もう一度eを検索します。

$ gr■ep tset /var/log/php.log

検索して戻りすぎた場合、tsetのところに戻りたい場合はControl+sを押します(zsh限定?少なくともbashじゃ無理) (追記:bashでも設定すれば出来ました。コメント参照。thanks to paselaさん)
1回押すと

$ gre■p tset /var/log/php.log

こうなって、もう一度押すと

$ grep tse■t /var/log/php.log

こうなります。
Control+rControl+sは普通過去のコマンドを検索することに使われますが、「過去のコマンド」に今入力した記述も含まれる、という感じでしょうか。

ちなみに余談ですがbashでControl+sを押すと端末をロックして動かなくなるので注意です。Control+qでロック解除になります。シェル使い始めた頃は、シェルがバグったと勘違いして毎回強制終了してました。。。

20
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18