以前はUNIXが本当に上手な同僚がいました。
彼は、Viキーバインディングを使用して私のシェルコマンドを編集する方法を教えてくれました。
ログインするたびに実行されるファイルにコマンドを配置しました。
それ以来、私は別のプロジェクトに移動しました。
残念ながら、これを設定する方法を覚えていません。
ここで、Viキーバインディングを使用してターミナルでコマンドを編集する方法を知っている人はいますか?
その設定を永続的にするにはどうすればよいですか?
あなたはこれまでで最高の機能について話しています!
これを.bashrc
ファイルに追加すると、viコマンドを使用してシェルコマンド(およびコマンド履歴)を編集できます。
set -o vi
コマンドラインからそのコマンドを実行して、現在のセッションのみに影響を与えることもできます。
Bashを使用しない場合は、シェルに適したrcファイルに置き換えてください。
これにより、viコマンドを使用して任意のコマンドを編集できます...
あなたも使うことができます j そして k 履歴を移動するには(を押した後 ESC)。
あなたも使うことができます / (打った後 ESC)古いコマンドを検索します。
言い換えると、10分前に実行したsuper-long cp
コマンドを見つけるには、次のようにします。
ESC/cpENTER
次に、履歴内のすべての一致するコマンドを循環させることができます n そして N。
これにより、コマンドラインでの生産性が10兆倍向上します。
Bashを使用している場合は、jahroyとevil ottoがすでに回答しているので、
set -o vi
bashにviスタイルの編集コマンドを使用させる。
これを実行したら、次のように入力できます Escv 現在のコマンドラインのコピーを含む一時ファイルでviエディターを起動します。コマンドを編集することも、複数行に置き換えることもできます。ファイルを保存するとき(:wq
)、シェルは編集されたコマンドを実行します。
ご希望の場合
set -o emacs
あなたは使うことができます Ctl-XCtl-E 同じことをする。お好みのエディターを使用します$EDITOR
、必ずしもemacsではありません。
(個人的には、ほとんどの編集にvi(実際にはvim)を使用していますが、set -o emacs
シェル;挿入モードのオンとオフの切り替えは、ファイルの編集には最適ですが、インタラクティブなコマンドには不便です。 YMMV。)
set -o vi
を使用して、@ jahroyが投稿したように行編集コマンドを変更できますが、fc
コマンド(bashで利用可能でkshだと思いますが、おそらくtcshではない)を考えているかもしれません。エディター(FCEDITまたはEDITOR、おそらくviに設定している)を使用して、エディターを終了するときにコマンドを実行します。詳細については、マンページまたはhelp fc
を参照するか、試してください。
Vimで最近使用したコマンドを編集し、エディターが保存して終了した後に編集したバージョンを呼び出すには、fc
Shellビルトインを使用します。引数がない場合は、次のことを行います。
/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に入れます