前のコマンドを繰り返すために使用できることを知っていますUp。走る最後コマンドにはUp+のみが含まれますEnter。しかし、もともと購入したかったのはハッピーハッカーキーボードなぜなら私はで多くの時間を費やしているからですvim
。
このキーボードには矢印キーがなく、この動作を実行する方法を知る唯一の方法はCtrl+を押して前のRコマンドを繰り返し始めることです。
Up矢印キーを使用せずにUNIX端末で+をシミュレートする簡単な方法はありますか?Enter
答え1
履歴の置き換え(、、、)などを実装するシェルをcsh
使用してください。csh
tcsh
bash
zsh
!!
次にEnter。
またはまたは:
!-1
次にEnter。
またはCtrl+ P、Enter
魔法の空間
また、実行するまで、および!!
は自動的に拡張されません!-1
(この時点では遅すぎる可能性があります)。
を使用している場合は、コマンドを入力して押すと自動的にインラインに展開されるため、実行前に確認できますbash
。これは、しばらく前に実行されたコマンドの履歴拡張に特に役立ちます。たとえば、で始まる最後のコマンドはpulledです。 Magic Spaceでは、コマンドを実行する前にプレビューできます。bind Space:magic-space
~/.bashrc
Space!echo
echo
bindkey ' ' magic-space
tcsh
これはまたはの役割と同じですzsh
。
答え2
コマンドライン編集機能を備えたほとんどのシェルはEmacsキーバインディングをサポートしています。 (非常に小さなサブセット)
Up Ctrl+P
Down Ctrl+N
Left Ctrl+B
Right Ctrl+F
Home Ctrl+A
End Ctrl+E
Delete Ctrl+D
set -o vi
あるいは、viコマンドを使用してシェル起動ファイル(例:)に追加して、シェルを編集モードに設定することもできます~/.bashrc
。たとえば、次のことができます。
- EsckEnter
前のコマンドを再実行するために使用されます(と同じ
!!
)。マイナスキーは-「上へ移動」コマンドとしても機能します。 -
最初の12個のコマンドを再実行するには、EsckkkkkkkkkkkkEnter
またはを使用します(と同じ)。Esc12kEnter
!-12
- Escとアクションコマンドを使用し(つまり、k適切に繰り返す)、その後編集するそこに見つけることができるbashコマンドライン。それでもコマンドモードになっているため、実際にコマンドを履歴に追加するには、編集コマンド(、、、または対応する小文字のいずれか)を
vi
使用する必要があります。たとえば、と同じです。vi
IACR
EsckisudoSpaceEntersudo !!
- 上級ユーザーの場合:コピーすることもできます(ワイank)テキストを1行入力して貼り付けます(血ut)他のものの上に置くと
!-2:- !$
。 (残念ながら、名前付きバッファをサポートしていないようです。)
答え3
私が一番好きなのはCTRL+P次のCTRL+O
デフォルトでは追加の設定は不要です。 ^Pは最後のコマンドに切り替え、^Oは現在行を実行させます。
CTRL+はO必要に応じて複数回使用できます。
答え4
実装する POSIX シェルを使用します。ユーザーの移植性オプション(ksh
、、、zsh
をbash
含む)がある場合は、次のコマンドを使用することもyash
できます。fc
fc -e : -1
例を見てください。
$ echo "hello"
hello
$ fc -e : -1
echo "hello"
hello
詳しくは履歴から一連のコマンドを実行します。ジョナサン・レプラ(Jonathan Leffler)の答えです。