このコマンドを使用してオプションをviに設定する多くの開発者を見てきました。私はこれの本当の使用を理解したことがありませんか?
bashコマンドを使用する場合、viに切り替えるとどのようなヘルプが提供されますか?
このコマンドを使用してオプションをviに設定する多くの開発者を見てきました。私はこれの本当の使用を理解したことがありませんか?
bashコマンドを使用する場合、viに切り替えるとどのようなヘルプが提供されますか?
回答:
readlineの編集をemacs(デフォルト)またはvi(set -o vi
)に設定することにより、シェルと選択したエディターで編集コマンドを本質的に標準化できます1。
したがって、シェルでコマンドを編集する場合は、テキストエディターを使用する場合と同じコマンド2を使用します。これは、1つのコマンド構文を覚えるだけでよいことを意味します(それが十分に有利でなかった場合)。
シェル履歴から任意のコマンドを取得し、ヒットEscapeしてコマンドモードに入り、を押すと、viモードでこの関係をさらに活用できますv。満足のいくようにコマンドの編集が完了する:wqと、コマンドがシェルで実行されます。
1.もちろん、EmacsまたはVi / mをエディターとして使用すると仮定します。
2.または、より正確には、そのサブセット...
set -o vi
、ほとんどの人が知らない最高の機能の1つです。これは、同じコマンドを異なる引数で(複数のコマンドラインコマンドとして)複数回発行する場合に特に当てはまります。
set -o vi
。デフォルト設定のset -o EMACS
Cx、Ceは、emacsウィンドウ(または、$EDITOR
設定されている場合は)を表示します。このウィンドウで、コマンドを実行する前に編集できます。
Android向けのConnectBotのようなモバイルSSHクライアントを使用している場合、Viモードはユーザビリティを大幅に改善します。
これは、修飾キーへの依存が減少したためです。
Vimは、Android UIに組み込まれているネイティブの編集方法など、他のものよりもスマートフォンやタブレットの仮想キーボードで使用する方がはるかに簡単です。皮肉なことに、SSHセッションでVimを使用してCソースを編集する方が、その目的のためにプラットフォーム独自の編集ウィジェットでインスタントメッセージを編集するよりも簡単です。
シェルviモードには、同様の利点があります。
viモードと操作を使用して、コマンドラインで編集できます。
例はそれをより明確にするのに役立ちます:
入力する cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
しかし、エラーが発生します-入力しfile1.txt
ないでくださいfile1.xt
このオプションが設定されていない場合は、上矢印キーを押してから左矢印キーを押して、35回繰り返し、...に到達して.xt
から余分なキーを入力しますt
。合計キーストローク:37。
では、このオプションは、プレス(例えば)を1回上矢印できる設定は、行の先頭に移動するには、コマンドモード、0のためにエスケープし、その後/xt[return]
に取得しxt
た後、次のように入力することができますi
挿入モード用と行方不明トンを入力します。これはいくつかの点でめちゃくちゃ複雑に思えるかもしれませんが、vimユーザーの場合、これらのコマンドはすでに非常によく知られています。合計キーストローク:9
Alt+B
のsまたはaを使用できるため、Ctrl+Alt+]
.
これは私にとって強力な例ではないようです。
Up
、Ctrl+Alt+]
、.
、Right
、t
、Enter
= 8 Viのモード:Up
、F
、.
、a
、t
、Enter
= 7 :)
Esc
、そこにもいるので、それは死の熱です。
直接的な利点があるかどうかはわかりません。私はvi
20年以上ユーザーです。私はscreen
さらに長い間、vi
キーを使用する他のプログラムのユーザーです。bashで「vi」モードを設定することを好むのは自然なことです。しかし、私は自分の仕事で何百ものサーバーで作業しています。ほとんどのサーバーはデフォルトの「emacs」モードに設定されています。したがって、両方のモードを使用する必要があります。しかし、それは本当に好みの問題です。
主な利点は、コマンドラインのモーダル編集です。Vimに精通していて、その哲学が気に入っている場合、その利点は明白でなければなりません。あなたがそれを経験しているなら、あなたの指の筋肉記憶はあなたを超高速であなたのbashコマンドを編集させます。
NB:モーダル編集が気に入らない場合でも、(デフォルトの)emacs-modeを利用することを学ぶ必要があります。以下のreadline
ような、あらゆるプロセスで動作する気の利いたキーボードショートカットをいくつか紹介しますbash
。
おそらくパーティーに遅れましたが、私にとっては、viモードを使用することは、インタラクティブスクリプトを作成するときのことです。たとえば、
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
非常に複雑になる可能性のある非常に単純な例..を使用ESCkvすると、viセッションに移動し、そこでスクリプトを変更して実行できます:wq
。
vi
モードでbashを使用する良い例かもしれませんが、bashコードの悪い例です。(1)からの出力をls
他の種類の処理への入力として使用するのは悪い考えです。(2)$(…)
コマンド置換の`…`
構文は、構文よりも読みやすいと広く考えられています。(3)正当な理由がない限り、シェル変数を常に引用する必要があり、自分が何をしているのかを確実に知っている必要があります。