簡単にコマンド履歴をナビゲート


Puedes leer la versión en español .


あなたがあまりにも多くの時間を端末でコマンドを書くときに、それはあなたが一日の間に使用されているすべてのプログラムを覚えていないことができない時間です.我々のために幸運に、我々はそうしなければなりません、「シェル」はあなたのためにそれをすることができます.そして今日、私たちは端末でのユーザーエクスペリエンスを向上させるためにこの機能を利用できる方法を学びます.

コマンドと矢印キー
私は、ここの誰でも正しく矢印キーを知っていると確信します?私たちはそれらを上下に歴史をナビゲートすることができます.あなたの何人かは知っているかもしれませんctrl+r , これは、古いコマンドの対話的な「逆の検索」を可能にします.しかし、私があなたに言ったならば、我々は2つの世界の最高を得ることができますか?
我々は、コマンドの最初の数文字を書くことができますし、上矢印キーを押すと、これらの文字で始まるコマンドをナビゲートを開始するキーを押します.
私たちがこれらのコマンドを我々の歴史に保存したふりをしましょう.
node ./test.js
vi /tmp/text.txt
nvim /tmp/text.txt
vi /tmp/test.js
echo "a string with vi in it"
vi /tmp/other-text.txt
我々は、我々が使用して修正ファイルを探したいvi . それで、我々はタイピングで始めますvi そして、私たちがUPキーを押すとすぐに、あなたのシェルはこれらのコマンドだけを示します.
vi /tmp/text.txt
vi /tmp/test.js
vi /tmp/other-text.txt
我々は、我々が書くことを望まないので、20回、キーを押すのを止めることができますnpm start . 種類np + 矢と我々は、そこにいます.
良い音、どのように我々はこの機能を有効にすることができますか?シェルによって異なります.
  • bashで
  • # Up arrow
    bind '"\e[A": history-search-backward'
    
    # Down arrow
    bind '"\e[B": history-search-forward'
    
  • ZSHでは
  • autoload -U up-line-or-beginning-search
    autoload -U down-line-or-beginning-search
    
    # Up arrow
    bindkey "${terminfo[kcuu1]}" up-line-or-beginning-search
    
    # Down arrow
    bindkey "${terminfo[kcud1]}" down-line-or-beginning-search
    

    Note: if you use oh-my-zsh it is already enabled for you.


    何らかの理由でterminfo が定義されていない場合、これを端末で試してみましょうctrl+v その後、矢印、奇妙なものは、画面上に表示されます.私の場合、
  • ^[OA
  • ダウン^[OB
  • したがって、terminfo . これは私のマシンで動く.
    bindkey '^[OA' up-line-or-beginning-search
    bindkey '^[OB' down-line-or-beginning-search
    

    インタラクティブ検索
    場合は、罰金の前の“トリック”が好きではなかった.たぶんあなたは良い古いctrl+r . ミー?私がインタラクティブな検索をするならば、私はむしろ使用しますfzf . With fzf 我々は得るthese scripts , key-bindings.*sh 特に古いものより良いユーザーエクスペリエンスによる履歴検索を可能にするctrl+r . 残念ながら、これを有効にするにはあまりにも多くの方法があります(いくつかのOSに依存します)ので、あなたがそれをしたい場合は、より良いあなたのケースに賛成しているメソッドを探してください.

    マジックスペース
    両方bash and zsh 「歴史展開」と呼ばれることがありますので、現在のコマンドのコマンド履歴からデータを使用することができます.例えば、
  • !! 我々の歴史の最後のコマンドです.なのでsudo !! 完全に有効です.ここでは「sudoとして最後のコマンドを実行します」と言います.
  • !$ は最後のコマンドの最後の引き数です.最後のコマンドならnano /tmp/test.txt , 私たちはcat !$ 内容を調べる/tmp/test.txt .
  • !* 最後のコマンドのすべての引数に展開します.
  • より多くの変形と組み合わせがありますが、それらは頻繁に使用するものです.
    とにかく、これらのシンボルを使っているなら、コマンドを実行する前に「展開」するつもりです.私は走るsudo !! 何を知っていることなく!! . これを行うにはコマンドと呼ばれるmagic-space . 我々の最初の「トリック」と同じように、我々はキーにそれを結合する必要があります.
  • バッシュ
  • # Space, but magical
    bind Space:magic-space
    
  • ZSH
  • # Space, but magical
    bindkey ' ' magic-space
    
    今、私たちは書くことができましたsudo !! その後、スペースを押してどのように見て!! 実行したいコマンドに変換します.

    結論
    私たちは私たちのシェルでユーザーエクスペリエンスを向上させることができるいくつかのトリックを学んだ.私たちは矢印キーで検索を高速化する方法を学びました.我々が利用できるとわかりましたfzf コマンド履歴で検索するにはctrl+r . そして最後に、ヒストリー展開と呼ばれるこのことをちょっとした垣間見ることになりました.歴史を問い合わせるとともに、いくつかのコマンドを使用することができます.
    あなたの時間をありがとう.あなたがこの記事を役に立つとわかるならば、私の努力を支持したいbuy me a coffee ☕ .