web-dev-qa-db-ja.com

set -o viを使用する利点

このコマンドを使用してオプションをviに設定する多くの開発者を見てきました。これの実際の使用法を理解したことはありませんか?

Bashコマンドを使用する場合、viへの切り替えはどのように役立ちますか?

61

Readlineの編集をemacs(デフォルト)またはvi(set -o vi)シェルと選択したエディター全体で、編集コマンドを基本的に標準化しています1

したがって、シェルでコマンドを編集する場合は、同じコマンドを使用します2 テキストエディタを使用している場合と同じです。これは、1つのコマンド構文を覚えておけば十分であることを意味し、(それでも十分な利点がなかった場合)おそらく、両方の環境で編集をより速く、エラーが発生しにくくなります...

シェル履歴からコマンドをプルアップして、viモードでこの関係をさらに活用できます。 Escape コマンドモードに入り、次に v、vimの全機能を使用してより複雑な編集を行うために読み込まれたコマンドで$ EDITORを開きます。コマンドの編集が完了したら、 :wq コマンドはシェルで実行されます。


1.もちろん、エディターとしてEmacsまたはVi/mを使用するとします。
2.または、より正確には、そのサブセット...

60
jasonwryan

ConnectBot for AndroidなどのモバイルSSHクライアントを使用している場合、Viモードは使いやすさが大幅に向上します。

これは、修飾キーへの依存度が低下するためです。

Android UIに組み込まれているネイティブの編集方法を含む他の何よりも、Vimはスマートフォンやタブレットの仮想キーボードで使用する方がはるかに簡単です。皮肉なことに、Cを編集する方が簡単です。 SSHセッションでVimを使用してソースを作成するのではなく、たとえば、その目的のためにプラットフォーム独自の編集ウィジェットを使用してインスタントメッセージを編集します。

Shell viモードにも同様の利点があります。

10
Kaz

コマンドラインでviモードと操作を使用して編集できます。

例はそれをより明確にするのに役立ちます:

cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/

しかし、エラーが発生します-file1.txtないfile1.xt

なしこのオプションセットでは、上矢印キーを押してから左矢印キーを押して、35回繰り返します。.xtを入力してから、追加のtを入力します。合計キーストローク:7

Withこのオプションセットを使用すると、(たとえば)矢印キーを1回押してから、エスケープしてコマンドモードにし、0で行の先頭に移動し、次に/xt[return]を使用してxtに移動し、挿入モードの場合はiと入力して、不足しているtを入力します。これはいくつかの点でめちゃくちゃ複雑に見えるかもしれませんが、あなたがvimユーザーであれば、これらのコマンドはすでに非常によく知られています。総キーストローク:9

6
Michael Durrant

直接的なメリットがあるかどうかはわかりません。私は20年以上viユーザーです。私はまた、より長い間screenユーザーであり、viキーを使用する他のプログラムのユーザーでもあります。私がbashで「vi」モードを設定することを好むのは自然なことです。しかし、私は自分の仕事で何百ものサーバーで作業しています。ほとんどはデフォルトの「emacs」モードに設定されています。したがって、両方のモードを使用する必要があります。しかし、それは本当に好みの問題です。

5
Arcege

主な利点は、コマンドラインのモーダル編集です。あなたがVimに精通していて、その哲学が好きなら、利点は明白でなければなりません。あなたがそれを経験しているなら、あなたの指の筋肉の記憶はあなたを電光石火の速さであなたのbashコマンドを編集させるでしょう。

[〜#〜] nb [〜#〜]:モーダル編集が気に入らない場合でも、(デフォルト)emacs-mode。 ここにいくつかの気の利いたキーボードショートカットがありますreadlineのような、bashを使用するすべてのプロセスで機能します。

4
rahmu

おそらくパーティーに遅れますが、私にとっては、viモードを使用することは、インタラクティブなスクリプトを作成するときに重要です。

for i in `ls | grep -v gz`
do
    echo $i
    gzip $i
done

非常に複雑になる可能性のある非常に単純な例。使用 ESCkv スクリプトを変更できるviセッションに移動し、次に:wqと実行されます。

1
Walter Werner

viに慣れている場合は、シェルエディターとしてviモードに設定します。それは明らかな理由だろう。もう1つは、bashが一部のOS(主にAIX、SolarisなどのUNIX)でデフォルトで使用できないため、シェル履歴機能が使用できないため、シェルを設定して過去のコマンドを取得する方法ですエディターをviに、そして Esc、 Ctrl+K または Ctrl+L

1
Shâu Shắc

これにより、vimのショートカットを使用してコマンドラインを簡単にナビゲートおよび編集できます。すばやく1つの単語に移動し、単語を削除します。

デフォルトのショートカットでは、行の最後に移動する必要がある場合は、 Ctrl+eset -o viでは、vimのように$を押すだけです。

1
Hahn