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


17

* nixのコマンドラインで長いコマンドを書き込み、最初に何かを追加するために、戻って最初の文字に行くことにした場合(例えばaのnohup、あなたはプロセスが長いもの、またはだろう実現する際にsudo、ときルート権限が必要なことを認識してください)カーソルが最初の文字に戻るまでに時間がかかることがあります...

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

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


2
Appleラップトップを使用している場合、Fn + Left / RightはHome / Endと同等です。(そして、関連して、Fn + Up / DownはPageUp / Downです。)
duskwuff -inactive-

2
この質問を読んでいる人にとって、これは事実上、シェル、より具体的にはシェルでのコマンドライン編集について尋ねています。以前のCtrl-Aの答えは、デフォルトのEmacsスタイルの編集でのbash(ほとんどの場合)です。
リッチホモルカ

4
単に追加する必要がある場合の代替sudoは、入力することsudo !!です。!!前のコマンドに置き換えられます。
マシュークランリー

回答:


29

Ctrl+A動作するはずです。Ctrl+Eコマンドラインの終わりに対応します。


1
すごい!これはMacでも完璧に機能します!
clami219

1
これは多くのコードエディターにも当てはまります。
ジョスティ

2
@ clami219:OSXのほとんどのテキストコンテキストで実際に動作します。Emacsのバインディングは...素晴らしいものです
tommyo

ありがとう、Linuxでも動作します。
ギデオンバブー

10

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

一部のシェル(AT&T ksh88など)では、入力行の編集はほとんどありません。

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

vi モード編集は最近、POSIX標準によって義務付けられました。

より多くの一般的な emacs編集モードは用途が(神に感謝し、それは、Emacsエディタスラッシュ・オペレーティング・システムとは関係ありません)Ctrl-A行の先頭にジャンプするとCtrl-E、行の最後にジャンプします。このモードではset -o emacs、多くのシェル(最も顕著なAT&T ksh93)で実行する必要がありますが、mkshおよびGNU bash ではデフォルトで有効になっています。

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

多くのシェルでは、キーバインドをカスタマイズできます。通常はemacsモード用ですが、一部のシェルではviモードのキーバインドをカスタマイズすることもできます。これにバインドしたいキーがある場合は、最初にそれが生成するキーシーケンスを把握する必要があります(たとえば、私のシステムでAlt-CursorLeftは、Esc+[+1+;+3+D^[[1;3D; ^Xis Ctrl-Xand ^[is Esc)を生成するので、

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

シェルに応じて、このキーバインドが変更されます。通常は、スタートアップファイル(~/.mkshrc~/.kshrc)またはGNU bashの場合はで保存できます~/.inputrc。すべてのシェルがすべてのバージョンのすべてのキーのバインドをサポートしているわけではないことに注意してください。

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


Unixの終了行文字である^ Dを使用してcatを終了します。私の考えでは、テキストストリームが「完了」しているため、^ Dです。
アーロンホール

@AaronHall:すでに何かがライン上にある場合、それは機能しません。さらに、終了するのではなく、中止したい;-)しかし、はい、通常の場合は正しいです。しかし、これは特別な場合です。
ミラビロス

端末は行編集も行う場合があります。
サミュエルエドウィン区

@mirabilos改行なしでEOFを送信するには、^ D ^ Dを実行します(つまり、Dを2回押します)。
ジャガイモのたたき

@Potatoswatterはい(楽しい、私は自分自身を知らなかった)が、私はここで特に中止したい。送信するとき^D^D、私はまだエコー「ジャンク」...取得
mirabilos

2

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


あなたが正しいです!Macを使用していることを指定する必要がありました...
clami219

2

あなたがに切り替えた場合はvi使用して、モードset -o vi、あなたがヒットすることができますEscし、どちらかIまたはA開始または行の末尾にテキストを入力します。または、カーソルを移動するだけの場合は、^および$です。


どのシェルのviモード?
デビッドリチャービー

2

emacsモード(:で切り替えset -o emacs)では、次を押します。

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

viモード(次のように切り替えられますset -o vi)でコマンドモード(Esc)の場合:

  • 0/ ^および$(コマンドモードのままになります)
  • IおよびA(編集モードに切り替わります)

こちらもご覧ください:

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