UNIXが本当に得意な同僚がいました。
彼は、Viキーバインディングを使用してシェルコマンドを編集する方法を示しました。
彼はコマンドを、私がログインするたびに実行されるファイルに入れました。
それ以来、私は別のプロジェクトに移りました。
残念ながら、これを設定する方法を覚えていません。
Viキーバインディングを使用して端末でコマンドを編集する方法を知っている人はいますか?
その設定を永続的にするにはどうすればよいですか?
UNIXが本当に得意な同僚がいました。
彼は、Viキーバインディングを使用してシェルコマンドを編集する方法を示しました。
彼はコマンドを、私がログインするたびに実行されるファイルに入れました。
それ以来、私は別のプロジェクトに移りました。
残念ながら、これを設定する方法を覚えていません。
Viキーバインディングを使用して端末でコマンドを編集する方法を知っている人はいますか?
その設定を永続的にするにはどうすればよいですか?
回答:
あなたは今までで最高の機能について話している!
これを.bashrc
ファイルに追加することにより、viコマンドを使用してシェルコマンド(およびコマンド履歴)を編集できます。
set -o vi
コマンドラインからそのコマンドを実行して、現在のセッションのみに影響を与えることもできます。
bashを使用しない場合は、シェルの適切なrcファイルに置き換えてください。
これにより、viコマンドを使用してコマンドを編集できます...
jまたはkを使用して、履歴を移動することもできます(を押した後ESC)。
/(を押した後ESC)を使用して、古いコマンドを検索することもできます。
つまり、cp
10分前に実行した超長コマンドを見つけるには:
ESC/cpENTER
そして、あなたがあなたの歴史の中で一致するすべてのコマンドを循環することができますnとN。
これにより、コマンドラインでの生産性が10兆倍向上しました!
vi bindings in the shell
これが今までに発明された最大の機能だと思います!
jj
とESC
我々は通常のvimで行うように?
bashを使用している場合、jahroyとevil ottoがすでに答えているので、使用できます
set -o vi
bashがviスタイルの編集コマンドを使用するようにします。
これが完了したらEsc v、現在のコマンドラインのコピーを含む一時ファイルを使用してviエディターを起動するように入力できます。コマンドを編集して、複数の行に置き換えることもできます。ファイルを保存すると(:wq
)、シェルは編集されたコマンドを実行します。
ご希望の場合
set -o emacs
Ctl-XCtl-E同じことをするために使用できます。$EDITOR
必ずしもemacsではなく、好みのエディターを使用します。
(個人的に、私はほとんどの編集にvi(実際にはvim)を使用set -o emacs
していますが、シェルでは好みです。挿入モードの切り替えはファイルの編集には最適ですが、インタラクティブなコマンドには扱いにくいです。YMMV。)
set -o emacs
あなたがしたいことをしませんか?
set -o vi
@jahroyが投稿されたように行編集コマンドを変更するために使用できますが、fc
コマンド(bashおよび私はkshで利用可能ですが、tcshではない可能性があります)を考えているかもしれません。おそらくvi)に設定し、エディターを終了するときにコマンドを実行します。マンページまたは詳細を参照するかhelp fc
、試してみてください。
alias r='fc -e -'
前のコマンドを再実行するための貴重なエイリアスです。 fc
それ自体がKornシェルに由来すると思います。コマンドを番号で指定できます(fc 123 129
履歴内のコマンド番号123〜129を編集します)。相対番号を指定できます(fc -10 -1
最後に入力した10個のコマンドを編集するため)。以前のコマンドはでリストできますfc -l
。あなたは接頭辞でコマンドを指定することができますr
エイリアス(r make
の最後の呼び出しを実行しますmake
。そうr m
、あなたが実行していませんでした場合はmv
、あなたが最後に実行するので、コマンドをmake
、など)。
vimで最近使用したコマンドを編集し、エディターを保存して終了した後、編集したバージョンを呼び出すには、fc
組み込みのシェルを使用します。引数なしで次を実行します。
/tmp
最後に入力したコマンドを使用してデータを取り込みます:cquit
)。コマンドはbashとzshの両方で機能します。
実際、これは実際にこれまでで最大の機能です。しかし、もっとあります:
という名前のファイルを作成します
.editrc
行を含む
bind -v
Editlineは、readlineのようなサービスを提供するBSDライセンスバージョンライブラリです。その.editrcは、MySQLのコマンドラインシェル、またはreadlineを使用しないアプリケーションでキーバインディングをviモードに設定します。
私は年月を経ていくぶん忘れっぽくなったので、.zshrc はviモードのラッパーを提供し、コマンドラインでどのモードになっているかを示します。いいね。
私はzshであなたが入力できることを知っています
bindkey -L
キーバインドのリストを取得します。bashには同様のものが必要です。すべてのviキーがデフォルトでバインドされているわけではありません。あなたがどのようにフィットしているかを彼らにバインドし、レースに出かけましょう。
端末で、と入力し
export EDITOR=vi
ます。
この設定を保存するには。この行をファイル〜/ .profileに入れます
$EDITOR
にします)vi
。vi
(少なくとも直接ではなく)でシェルコマンドを編集することはできません。
$EDITOR
含む場合、デフォルトでvi編集モードになりますvi
。これを行う唯一のシェルだと思います。