web-dev-qa-db-ja.com

* nixコマンドラインの最初の文字に戻る方法は?

* nixコマンドラインで長いコマンドを記述し、最初に何かを追加するために最初の文字に戻る必要がある場合(たとえば、Nohup、プロセスが長いものであることがわかった場合) 、またはSudo、root権限が必要であることがわかった場合)、カーソルが最初の文字に戻るまでに長い時間がかかる場合があります...

まっすぐジャンプできるショートカットはありますか?

Macを使っているので Home オプションではありません

18
clami219

Ctrl+A うまくいくはずです。 Ctrl+E コマンドラインの最後に対応します。

30
choroba

これは問題のシェルに依存します。

一部のシェル(AT&T ksh88など)は、実質的に入力行の編集を提供しません。

viモード編集を実装するシェルでは(set -o viでこれを有効にする必要がある場合があります)、これは Esc (挿入モードから切り替える)の後に  行頭にジャンプする、または $ 行末にジャンプします。次に、を押して、挿入モードに再度入ります i –カーソルは現在の場所に留まります–または a –カーソルが1つ右に移動してテキストを追加します。

viモードの編集は、最近POSIX標準で義務付けられています。

はるかに一般的ですemacsモード編集(感謝します、Emacsエディター、スラッシュ、オペレーティングシステムとは関係ありません)使用する Ctrl-A 行の先頭にジャンプし、 Ctrl-E 行の終わりにジャンプします。このモードでは、多くのシェル(最も目立つのはAT&T ksh93)でset -o emacsを実行する必要がありますが、デフォルトでは mksh およびGNU bash。

最近のほとんどのシェルは、emacsモードとviモードの両方をサポートしています。 (これらのモードはどちらも動作するためにttyを必要とします。)

多くのシェルでは、キーバインドをカスタマイズできます。通常はemacsモード用ですが、一部のシェルではviモードのキーバインドをカスタマイズすることもできます。これにバインドしたいキーがある場合は、まずそれが生成するキーシーケンスを理解する必要があります(たとえば、私のシステムでは、 Alt-CursorLeft 作り出す Esc+[+1+;+3+D^[[1;3D; ^Xは Ctrl-X そして^[は Esc)、次のように入力できます

bind '^[[1;3D=beginning-of-line'
bind '"\e[1;3D":beginning-of-line'

シェルによっては、このキーバインドが変更されます。通常、これらを起動ファイル(~/.mkshrc~/.kshrc)に、またはGNU bashの場合は~/.inputrcに)永続化できます。すべてのシェルではないことに注意してください。 bindindは、すべてのバージョンのすべてのキーをサポートしています。

通常、シェルでcatを実行し、キーを入力して監視するだけで、キーが生成する文字を確認できます。次に^CCtrl-Ccatを中止します。

10
mirabilos

ホームキーを試しましたか? MobaXtermを使用してLinuxボックスに接続し、キーボードのHomeキーとEndキーの両方を使用して、コマンドの最初または最後の文字に移動します。

2
PAS

viモードに切り替えた場合は、set -o vi、ヒットできます Esc そしてどちらか I または A 行の最初または最後にテキストを入力します。または、カーソルを移動したいだけの場合は、 ^ そして $

2
TankorSmash

Emacsモード(切り替え:set -o emacs)次のキーを押します。

  • Ctrl+A そして Ctrl+E
  • Home そして End
  • Esc+b そして Esc+f (カーソルを現在のWordの前後に移動します)

Viモード(切り替え:set -o vi)コマンドモードの場合(Esc)それは押すことによる:

  • /^ そして $ (コマンドモードのままになります)
  • I そして A (編集モードに切り替わります)

以下も参照してください。

2
kenorb