1. ホーム
  2. bash

[解決済み] ターミナルのコマンドラインでカーソルを移動させる最速の方法は?

2022-04-20 11:56:22

質問

ターミナルで非常に長いコマンドラインを移動するのに最適な方法は何ですか?

例えば、矢印キーや Ctrl - R を実行すると、このような長いコマンドラインになります。

./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 --option43 --option44 --option45 --option46 --option47 --option48 --option49 --option50 

さて、カーソルを(行頭または行末から)次のように移動させる必要があります。 --option25 を使用して、そこにある何かを変更します。

一番手っ取り早い方法は何でしょうか?私がいつもやっているのは Ctrl - A を繰り返して冒頭に行き、その後 オルト - F を使えば、一語一語、前に進むことができます(または Ctrl - E を押して終了し オルト - B を実行すると、逆戻りする)。しかし、長い行では、それでは時間がかかりすぎます。検索して、修正したい部分に直接ジャンプする方法があるはずです。 option25 ?

解決方法は?

まだ解決していないので、いくつかの選択肢を紹介します。

  • 使用方法 Ctrl + x に続いて Ctrl + e で指定されたエディタで現在の行を開きます。 $FCEDIT または $EDITOR または emacs (の順で試しました)。
  • 先にコマンドを実行した場合、ヒット Ctrl + r と入力すると、履歴の逆引きができます。 option25 (この場合)です。行が表示されます。ヒット タブ をクリックすると、この時点で編集を開始します。
  • ヒストリ展開で s/// モディファイアを使用します。例 !-2:s/--option25/--newoption/ は最後から2番目のコマンドを再実行しますが、option25を置き換えます。最後の ./cmd コマンドを使用します。 !string の構文があります。 !./cmd:s/--option25/--newoption/

    置換の / の代わりに任意のデリミタを使用することができる。
  • 前の行を編集する場合は、クイック置換を使用することができます。 ^--option25^--newoption
  • 文字検索。これはPaxが言及したもので、通常のemacs-modeで以下のように行うことができます。 Ctrl + ] は前方探索用、そして Ctrl + Alt + ] 後方検索用。

2番目の選択肢をお勧めします。 Ctrl + r は本当に便利で速いです。エディタをいじる必要もなく、コマンドを実行する前に結果を見ることができます(ヒストリの拡張とは異なります)。