Fish-shell: 略語

䜜成日 2013幎05月11日  Â·  92コメント  Â·  ゜ヌス: fish-shell/fish-shell

゚むリアスの代わりに略語を導入し、堎合によっおはそれらを眮き換えたす。

略語は、コマンドラむンで入力するず完党な圢匏に展開されるこずを陀けば、゚むリアスずたったく同じです。 git commit省略圢ずしおgcがあるずしたす。 ここで、 gc -am "did stuff"ず入力するず、「gc」の埌にスペヌスを入力するずコマンドラむンが倉曎され、最終的にgit commit -am "did stuff"たす。 これは、コマンド䜍眮で、スペヌスを入力するかEnterキヌを抌したずきにのみ発生したす。

_元のテキストは次のずおりです_

゚むリアシングを自己拡匵型の短い圢匏に眮き換えたす

これらを䜕ず呌ぶか​​わかりたせんが、ずにかく。 コマンドずしお「g」ず入力するず、スペヌスを入力するか入力するず「git」に展開されるずいう考え方です。

匕数

  • 完了に関する問題の倚くを解決したす。 ゚むリアスは「ラむブ」で展開されるため、gitの補完は通垞どおり機胜し、 commandlineは嘘を぀いたり、そのような他のハックを行ったりする必芁はありたせん。
  • 実装は簡単です。 完党な実装を曞こうずはしたせんcommandlineが、 bindずcommandlineそれを行うこずができたす。 他の提案された゜リュヌションのように、 functionやcompleteなどを倉曎する必芁はありたせん。
  • それは間違いなく「怪しい」ものです。ナヌザヌは展開されたフォヌムを芋るこずができ、゚むリアスに隠されおいたせん。 完了ず同様に、 prevd-or-backward-wordなどを䜿甚したプロンプトの再描画など、瞬時にラむブで実行されたす。
  • 他の人に指瀺するためにコマンドラむンをコピヌしお貌り付ける堎合、他の人が知らないカスタム゚むリアスでいっぱいになるこずはありたせん。
  • ほが正しい堎合は、展開されたフォヌムを線集できたす。

反察意芋

  • alias git=hubの問題を解決したせん。これは、珟圚は存圚したせんが、このようないく぀かの゚むリアス補完提案で導入された問題です。 ただし、この提案された゚むリアスシステムを回避する代わりに、通垞の関数function git; hub $argv; end䜜成するだけで枈みたす。
  • Tabなどを抌さずに、入力時にコマンドラむンを倉曎するず驚く人もいるかもしれたせん。
  • 展開されたフォヌムを線集できる理由は、2぀のバックスペヌスだけで入力したものを削陀できない理由でもありたす。 たずえば、 gcをgit commitに展開する堎合があるため、CTRL-Wでも十分ではない可胜性がありたす。 CTRL-Uは、それが唯䞀のコマンドである堎合は実行したすが、たずえばパむプの゚むリアスを䜿甚しおいる堎合は、削陀しすぎたす。 おそらく、「バッファ党䜓ではなく、珟圚のコマンドを匷制終了する」ための新しいバむンディングを導入するこずができたす。
  • 質問

先行技術

  • Vimで:abbreviate
  • Chromeの怜玢゚ンゞンかもしれないず思いたすか

議論。

enhancement

最も参考になるコメント

魚が略語をファむルに保存しおおけばいいのに...

マニュアルペヌゞから「略語はナニバヌサル倉数を䜿甚しお保存されたす。」 ぀たり、それらは_〜 / .config / fish / fishd.macaddr_ファむルの倉数名fish_user_abbreviationsたす。 abbrコマンドは、そのナニバヌサル倉数を操䜜するだけです。

党おのコメント92件

別のアむデアは、Vimのようにこの「略語」に名前を付けおから、別の問題で゚むリアスをどうするかを決定するこずです[私はそれらを削陀する必芁があるず思う傟向がありたす]。

反察の別の議論の考え

  • これらの「゚むリアス」をスクリプトで䜿甚するこずはできたせん。 ずにかくスクリプトで゚むリアスを䜿甚するのは良い考えではありたせんが、「略語」を展開する機胜を持たせたり、魚の略語を゚ディタヌにフックしお、そこでの入力で展開させるこずもできたす。

私はあなたの提案が奜きです、クヌルで魚のように聞こえたす+1

私もこれが奜きです。
これは、非垞に煩わしい「゚むリアスの完了」393問題に察する非垞にクリヌンな゜リュヌションです。
これをll<tab>を実行するずきにll (Alias)プリントアりトず組み合わせるず完璧です。

aliasは今日のfunctionスクリプトラッパヌにすぎないので、関数ず゚むリアスはこの埌非垞に倚くの点で異なるため、関数ず゚むリアスの間に明確な違いがあるように、これも倉曎したいず思いたす。 

  • 構文
  • 衚珟力
  • 䜿甚法

@gustafjこのアむデアを「略語」ず呌び、 aliasを、 functionずabbreviate指す有甚な゚ラヌメッセヌゞを瀺すものに眮き換える方がおそらく良いず思いたす。 考え

別の泚意

g gitが匕数の䜍眮でsudo ぀たり、sudoを省略圢で䜿甚できるこずを意味したす。゚むリアスでは実行できたせんや、そのような明確な補完の特定のケヌスが必芁です。 git自身の゚むリアスの堎合、たたは長いオプションの䞀郚を入力した堎合。 ただし、これを正しく行うのは難しいかもしれたせん。完了が叀くなっおいる堎合にのみ邪魔になりたす。実際にsudo gではなくsudo gitを実行したい堎合は、 sudo (echo git)ような操䜜を行う必芁がありたす。 sudo "g"ず蚀うこずができたす。 それがあたりにも魔法で驚くべきものなのか、それずも実際に期埅しお盎感的なものなのかはわかりたせん。 考え :-)

略語は私には良いように聞こえたすしかし、私は通垞のvimナヌザヌなので、偏芋があるかもしれたせん...。
私がそれに぀いお考えるずき、これで行うこずができる非垞に倚くの「興味深い」こずがありたす、しかしあなたがすでに指摘したようにこの地雷原にも隠された眠がありたす/

完党に自動化されおいお、コマンドラむンの任意の堎所にある堎合は、問題がある/煩わしいず思いたす。ほずんどの堎合、省略圢を元に戻すのは、䞍芁なものに展開する堎合、特に長い文字列に展開する堎合は面倒です。

私自身のいく぀かの考え
spaceを䜿甚しお自動化する必芁がありたすか、それずもtabなどのオプションによっおトリガヌする必芁がありたすか
git g単玔な文字列のみにする必芁がありたすか
コマンドラむンの最初の項目にのみ適甚する必芁がありたすか、それずもどこにでも適甚できたすか
珟圚の日付Tue May 14 20:23:03 CEST 2013に察しおd文字列->倀倉換を実行できる必芁がありたすか
vim (find . -iname '*cfg')<tab>が䞎える䟋のサブシェルを拡匵するこずが可胜である必芁がありたす

foo.cfg bar/poo.cfg foo/bar/more/beer.cfg
> vim

あなたの考えに぀いおの考え

スペヌスを䜿甚しお自動化する必芁がありたすか、それずもタブなどのオプションによっおトリガヌする必芁がありたすか

䜕かが゚むリアスであるかどうかを考える必芁がなく、タブがそうではない゚むリアスで埗られるシヌムレスな゚クスペリ゚ンスを取埗するこずが重芁であるため、これはスペヌスおよび入力では機胜しないず思いたす。 g<Tab>はgで始たるコマンドを完了する必芁があるため、どちらでも機胜したす。 CTRL-Xなどの新しいバむンディングを远加するず、通垞の補完、自動暗瀺、略語の3皮類の補完ができたす。 私はこれがスペヌスで行われる必芁があるか、たったく行われない必芁があるず本圓に思いたす。

gitのgなどの単玔な文字列のみにする必芁がありたすか

コマンド䜍眮では、省略圢に匕数を含めるこずができるはずです。 たずえば、 gcがgit commit --all展開されたす。 基本的に、略語は、コマンドラむンでラむブで展開されるこずを陀けば、゚むリアスずたったく同じだず思いたす。

コマンドラむンの最初の項目にのみ適甚する必芁がありたすか、それずもどこにでも適甚できたすか

コマンド䜍眮でのみ、おそらく良いスタヌトです。 次に、前に提案した匕数䜍眮のナヌスケヌスを実隓するこずができたす。

珟圚の日付の文字列->倀の倉換を行うこずは可胜でしょうか火5月14日火曜日20:23:03 CEST 2013

あなたは議論の立堎にいるずいう意味ですか echo dは日付を゚コヌするように拡匵したすか 匕数の䜍眮の省略圢を䜿甚する堎合は、非垞に控えめに䜿甚する必芁があり、匕数がコマンドの堎合 sudo堎合などたたはコマンドに独自の゚むリアスシステムがある堎合にのみ䜿甚する必芁があるず思いたす。  gitの堎合のように拡匵するず、拡匵しないのずたったく同じ効果がありたすしたがっお、䜿いやすさのためにのみ拡匵したす。

vim (find . -iname '*cfg')<tab>サブシェルを拡匵できるかどうか

略語をタブを含み、スペヌスでサブシェルを拡匵するこずはおそらく悪い考えだずは思わないので、それは略語ではなく補完の問題だず思いたす。 ただし、倉数名を展開せずに既に完了できるため、完了に察しおも機胜するかどうかはわかりたせん。

しかし、それは圹に立぀かもしれたせん。 私が想像するように、 rm *.pngを実行し、ワむルドカヌドを展開しお、リストからいく぀かのファむルを削陀したす。

これはどうですか。完了システムに䌌た䞀般的な「拡匵」たたは「省略」システムがありたす。 トヌクンを拡匵するためにCTRL-Xなどをバむンドしたす。 たた、コマンド䜍眮では、略語も自動的に展開されたす。 たた、これらの拡匵を明瀺的にするこずで、 sudoずgitナヌスケヌスが目立たないようにするこずもできたす。

しかし、それは私の最初のアむデアよりもはるかに倧きな提案です。 りィンク

トリガヌずしおのスペヌスは私には良いず思いたすが、おそらく最高のナヌザヌ゚クスペリ゚ンスを提䟛したす。
*.pngするのは面癜そうです;
私自身、さたざたなものにさたざたなバむンディングを䜿甚するのは奜きではありたせん。おそらく、新しいバむンディングの代わりに「ダブルタブ」を䜿甚できたす。
䟋....*.png<tab>はpress <tab> again to expand *.pngを䞎えたすサブシェルに぀いおも同じです。

ただし、この提案を次のように制限する方がよい堎合がありたす。コマンド䜍眮の略語、スペヌスを䜿甚しお拡匵する。
たた、「サブシェル/ワむルドカヌドの拡匵」ずsudoのサポヌトを個別に甚意しおいたすか

珟圚、完了間を埪環しおいるため、ダブルタブが機胜するかどうかはわかりたせん。 Vimにはスペヌスを入力せずに略語を展開するためのCTRL +]があるようです...

ラむブ拡匵を行うのであれば、なんずかしお略語を実装する必芁があるず思いたすので、アむデアは関連しおいたす。 ただし、ラむブ拡匵を行わない堎合でも、略語はそれ自䜓で怜蚎する必芁がありたす。 したがっお、ここで䜕をすべきかわからない。 :-)

ええ、 <tab>に぀いおのあなたの暩利は、サブシェルに぀いおのみ考えおいたした珟圚は䜕もしおいたせん。
<anything><space><tab>の珟圚の動䜜を倉曎するこずが可胜である可胜性がありたす。これは、珟圚のディレクトリで䜿甚可胜なすべおのファむルを埪環したす最初にすべおを出力したす。
元

> ls <tab>
a.cfg  b.cfg  c.cfg  d.cfg
> ls <tab>
> ls a.cfg<tab>
> ls b.cfg<tab>

しかし、私はそれなしで生きるよりも、新しいキヌコンボを䜿っお「ラむブ拡匵」をしたいです;
*.cfgをa.cfg b.cfg c.cfg d.cfg拡匵するず、非垞に䟿利です。
しかし、可胜性のある拡匵のすべおの圢匏は、ワむルドカヌドだけでなく、䞭括匧の補完を陀いお拡匵可胜である必芁がありたすこれは削陀されたほうがいいです...しかし、それは別の問題です354

しかし、可胜性のある拡匵のすべおの圢匏は、ワむルドカヌドだけでなく、䞭括匧の補完を陀いお拡匵可胜である必芁がありたすこれは削陀されたほうがいいです...しかし、それは別の問題です354

䞡方のアカりントで合意したした。 二重匕甚笊も拡匵可胜にする必芁があるのでしょうか... echo "hello $USER" -> echo "hello dag" 。

ここで話しおいるのは、実際には「拡倧」ではなく「評䟡」であるず思いたすが、略語は評䟡ではないので、これらのアむデアはおそらく別のものであり、もう䞀方のアむデアを䜜成しお線集したすこれは少し。

これが基本的な実甚的なプロトタむプです

function __fish_expand_abbreviation
    if test (count (commandline -poc)) -eq 0
        switch (commandline -t)
            case g
                commandline -t git
            case gc
                commandline -t 'git commit'
        end
    end
end

bind \  '__fish_expand_abbreviation; commandline -i " "'
bind \n '__fish_expand_abbreviation; commandline -f execute'

私が気付いた問題の1぀は、Enterキヌを抌しお省略されたコマンドラむンを実行するず、匕数を含めおも、展開されたフォヌムが゚ラヌ䞍明なコマンドずしお匷調衚瀺されるこずです。

私はこれがずおも奜きだったので、これらの略語を管理する方法を実装したした。

結局、これらは完了ず関数が凊理されるのず同じ方法で凊理されるべきだず思いたす。 保存できる独自の略語フォルダがありたす。

これは珟圚の実装です

function __fish_expand_abbreviation
  if test (count (commandline -poc)) -eq 0
    set -l token (commandline -t)

    if abbreviations -q $token
      commandline -t (abbreviations $token)
    end
  end
end
function abbreviations --description 'List, show and query abbreviations'
  if test (count $argv) = 0
    printf '%s\n' $fish_abbreviations
    return
  end

  set -l abbreviation_index 0
  set -l expanded_abbreviation

  for i in $fish_abbreviations
    set abbreviation_index (math $abbreviation_index + 1)
    echo $i | read -l abbreviation command

    if test $abbreviation = $argv[-1]
      set expanded_abbreviation $command
      break
    end
  end

  if test -n "$expanded_abbreviation"
    switch $argv[1]
      case -q --query
        return 0
      case -e --erase
        set -e fish_abbreviations[$abbreviation_index]
      case '*'
        echo $expanded_abbreviation
      end
  else
    return 1
  end
end
function abbreviate --description 'Define a new abbreviation'
  if test (count $argv) -lt 2
    echo 'abbreviate: Takes two arguments. First abbreviation and then expanded command'
    return 1
  end

  echo $argv | read -l abbreviation command

  eval "function $abbreviation; $command \$argv; end"
  abbreviations -e $abbreviation

  set -U fish_abbreviations $fish_abbreviations "$argv"
  return 0
end

次に、次のようなこずを行いたす。

abbreviate !    'sudo'
abbreviate tf   'tail -f'
abbreviate l    'ls -la'
abbreviate l.   'ls -d .*'
abbreviate g    'git'
abbreviate gs   'git status'

曎新1略語を削陀しおナニバヌサル倉数に栌玍する機胜を远加したす。
曎新2略語の関数も䜜成する

関数がどのように機胜するかを芋お、以䞋を玹介するこずができたす。

  • abbred
  • abbrsave

これは基本的に、これらの関数のクロヌンを䜜成するこずです。

良い ただし、 ~/.config/fish/abbreviationsディレクトリずそれに付随するabbr{ed,save}が必芁だずは確信しおいたせん。 関数や補完ずは異なり、個別にロヌドするのにそれほど時間がかからず、定矩する必芁があるのは1行だけです。 私は、圌らがより䌌おいるず思いたすbindおそらく我々が持っおいる可胜性があり、 fish_[user_]abbreviationsのような関数fish_user_key_bindings負荷初めおの魚の詊みは、略語を展開するこず、機胜を 䞀貫性を保぀ために[user_]ですが、デフォルトの略語を出荷する必芁があるかどうかわかりたせんか

略語甚に耇数のファむルがあるず私が考えるこずができる唯䞀の理由は、存圚するすべおのgitコマンドの略語を蚀い、䞀郚には匕数が付いおいるため、それらを他のコマンドずは別にしたい堎合です。 ただし、これは遅延読み蟌み関数ず補完の仕組みではありたせん。コマンド名に基づいお読み蟌たれるため、省略圢に察しおこれを行うず、省略圢ごずに1぀のファむルが䜜成され、各ファむルには1行のコヌドしか含たれたせん。 

もう1぀のアむデアは、おそらく実際にナニバヌサルを䜿甚するこずによっおも、ナニバヌサル倉数のようなこずを行うこずです set -U fish_abbreviations 。 おそらく、ホストロヌカルの略語のナヌスケヌスがありたすか わからない。

あなたにはいく぀かの良い点があり、私はfish_user_abbreviations方法に傟いおいたす。

もう1぀のアプロヌチは、関連するすべおの略語をファむルに入れるような補完を行うこずですが、それをマッピングするのは難しい堎合がありたす。

最初はset -U fish_abbreviationsを䜿甚する予定abbred 、 abbrsave のように、面倒なこずなくその堎で補完を远加できるこずです。 abbreviate実行するだけです。

1぀の解決策は、コマンドに略語が䞀意に远加され、既存の略語が䞊曞きされるこずを確認するこずです。 次に、 fish_user_abbreviationsでブヌトストラップされ、ナヌザヌは必芁に応じおナニバヌサル倉数にカスタム倉数を远加できたす。

私は今これを持っおいたす
set -q fish_abbreviations ; or fish_user_abbreviations

しかし、ファむルを維持し続けるず、それは機胜したせん。

以前の関数を曎新しおナニバヌサル倉数を䜿甚し、それらを消去する可胜性を远加し、新しい関数が存圚するかどうかを远加する前に確認したした。

珟圚の略語を眮き換えるかどうかを尋ねるなど、よりむンタラクティブにするこずを考えおいたした。 しかし、それもスクリプト化されおいる可胜性があるので、私はそれをしたくありたせんでした。 むンタラクティブモヌドの決定に぀いお芋おいきたす。

補完機胜に぀いおは、1぀のコマンドで読み蟌たれるこずもよくわかりたす。 珟圚のコマンドラむンプロセスがgit堎合、 completions/git.fishがロヌドされたす。 別々のコマンド名がある堎合は、別々のファむルを䜜成する必芁がありたす。たずえば、これら3぀の完了ファむルのそれぞれから呌び出される関数に実際にある[ef]grepの補完を参照しおください。

略語を䜿甚するず、ファむル名が略語でない限り、どのファむルをロヌドするかを略語から知る方法がわかりたせん。 たた、1぀のファむルに耇数の略語を含めるこずはできたせん。 開始時、たたは最初に略語を展開しようずしたずきにすべおの略語ファむルをロヌドできるず思いたすが、それは関数ず補完のロヌド方法ずは異なり、略語ファむルが倚数ある堎合は遅くなる可胜性がありたす。

新しいアむデア普遍的な略語を䜜成するためのabbreviate -Uず、グロヌバルな略語を䜜成するためのabbreviate -gたたは単にabbreviate  それを行う堎合は、おそらくbindでも行うこずを怜蚎する必芁がありたす...

たた、 abbreviateは、 bindずfunctionずsetず同じように、既存の略語を䞊曞きするだけでよいず思いたす...

すべお有効なポむントです。 他のすべおの関数ず同じように䞊曞きするのは理にかなっおいるず思いたす。

たた、略語/バむンディングの凊理方法を柔軟に遞択できる、ナニバヌサルおよびグロヌバルの提案も気に入っおいたす。 しかし、それを実装する方法が完党にはわかりたせん。おそらく、これはパフォヌマンスを向䞊させるための組み蟌みである必芁があるず思いたすか

ええ、私はそれを詊すために魚のスクリプトでそれをプロトタむピングしただけでした。 おそらく、スペヌスを入力するたびに遅いスクリプトが起動するこずは望たしくありたせん。 りィンク

ええ、ただうたくいっおいたす。 私はそれを玄1日間䜿甚しおいお、もうそれなしで生きおいるずは想像できたせん、ハハgrin

赀面

私が気付いたもう1぀の問題は、空でないコマンドラむンでC-aし、省略圢を入力するず、単語の途䞭にいるため、スペヌスで展開されないこずです。 ぀たり、 make install oops need root C-a !実行するず、 ![cursor]make install 、スペヌスを入力しおも!省略圢は展開されたせん。 commandline -Cこれを回避しようず思いたす。

機胜である可胜性のある3番目の問題は、スペヌスを入力するか、省略圢の埌に入力した堎合にのみ展開されるこずです。 したがっお、たずえば、スペヌスを入力した堎合はC-a ! C-eはありたせん。 これは、省略圢の展開を回避できるため、機胜になる可胜性がありたすが、少し厄介だず思いたす。代わりに、 commandコマンドのように、コマンドラむンを文字通り実行するコマンドのようにする必芁がありたすが、アカりンティングも必芁です。シェル関数ずビルトむン甚。 たたは、コマンド䜍眮の\gなどの特別な構文は、 gずしお解釈され、展開されたせん。 特別な構文もそれほど厄介ではありたせんが、コマンドの前に「履歎にログむンしない」ずいう意味の特別な倧文字ず小文字を区別するスペヌスがすでにあるので、肩をすくめおください。

第4に、これはあいたいなものです。前の段萜のように、展開されおいない省略圢の埌にスペヌスが続く堎合は、 C-aずスペヌスを実行するず、省略圢が展開され、䜙分なスペヌスが挿入されたす。その埌 繰り返したすが、 commandline -Cカヌ゜ル䜍眮を確認する必芁があるかもしれたせん。

ああ、前のコメントで最初に述べた問題は、展開されおいない略語が䞍明なコマンドである堎合にのみ発生したす。 したがっお、 gc省略圢はgit commit展開され、Enterキヌを抌すずスペヌスなしで党䜓が゚ラヌずしお匷調衚瀺されたすが、 gs省略圢はgit status展開されたす。どうやら私はghostscriptがむンストヌルされおいるので、

> which gs
/usr/bin/gs

たた、スペヌスを抌す前でも、略語を既知の「コマンド」ずしお匷調衚瀺する必芁があるのではないかず思いたす。珟圚、 gず入力するず、スペヌスを入力するたで赀になりたすが、 git入力するず赀になりたす。スペヌスの前でも既知のように匷調衚瀺されたす。

これらすべおの問題は、C ++の郚分でこれを行うず、おそらくより適切に察凊できる可胜性がありたす。

シンタックスハむラむトの問題に察する愚かな回避策すべおの略語の゚むリアス/関数を䜜成したす。 笑い

実際には、ずにかくそれを行うのは良い考えかもしれたせん、うヌん...略語がスクリプトで、 evalで、 typeで機胜するこずを意味したす...わからない。

あなたの回避策は私が珟圚䜿甚しおいるものですが、それが最終的に䜕をすべきか、たたはそれらがevalたたはtype内で䜿甚されるこずを意図するべきかどうかはわかりたせん。 私にずっお、それらは入力のみのものでなければなりたせん。 しかし、sudoなどの簡単なサポヌトを埗るためにそれらを実行させおも問題はないかもしれたせん。

したがっお、私はしばらくの間珟圚の実装を䜿甚しおおり、これらはこれたでのずころこの゜リュヌションで発芋された問題ですこれらはアプロヌチ+1 :)ずは関係ありたせん

  1. テキストを貌り付ける堎合、最埌のスペヌスは、䟋えば、行の先頭に挿入したすecho this is a testなり_echo this is atest貌り付けるずき、 _スペヌスです。
  2. readビルトむンを䜿甚する堎合、 enterずspaceのバむンディングも適甚されたす。 したがっお、たずえば、コマンド以倖のコマンドを入力しお読み取る堎合は、展開されたす。 最終的な実装では、これはデフォルトでオフになり、 read -s有効になるはずです。
  3. 少し遅いです〜0.25-0.5秒

C-y貌り付けるこずで、1。を回避できたす。

私の堎合、 C-yは魚の内郚で切り取られたものから魚の䞭にのみ貌り付けられ、システムのクリップボヌドからは貌り付けられたせん。 端末間たたは他のアプリ間でのコピヌ。

略語は本圓にクヌルなアむデアだず思いたす。

人々が略語を詊しお、正しい行動がどうあるべきかを掗緎できるようにしたいず思いたす。 略語の初期サポヌトを92099c7af23d0cebf52f89de4f9d829825e53ac8およびf9c2a77c67754324f3036ec79501c6131d19562bずしおマスタヌにチェックむンしたした。

䜿甚方法の䟋

set -U fish_user_abbreviations 'gc=git checkout'
gc

gcは、スペヌスたたはリタヌンで「gitcheckout」に展開されたす。

略語はリストなので、新しい略語を远加するには

set fish_user_abbreviations $fish_user_abbreviations 'grh=git reset --hard'

略語は「コマンド䜍眮」たずえば、サブシェルたたはifの匕数ずしおで展開されたすが、匕数ずしおは展開されたせん。 スクリプトでも略語は展開されたせん。

議論のためのいく぀かの未解決の問題がありたす

  1. 「略語」は長くお぀づりが難しいです。もっず良い名前を芋぀けるこずができたすか 「゚むリアス」は、他の甚途にただ䜿甚されおいない堎合に適しおいたす。 1぀の可胜性は、それを反転するこずです。たずえば、「拡匵」です。 fish_user_expansionsは私には倧䞈倫だず思いたす。
  2. 略語はどのように指定する必芁がありたすか gc=git checkout構文は軜量ですが、魚の他の堎所では䜿甚されおいたせん。
  3. ゚ンタヌでは拡匵せず、スペヌスのみを拡匵したい堎合がありたす。 Enterキヌを䜿甚しお展開するず、実行するこずを確玄するたで、実行したコマンドがナヌザヌに衚瀺されないずいう欠点がありたす。 スペヌスのみを展開する堎合、ナヌザヌは省略圢、スペヌス、Enterの順に入力できたすが、それほど負担にはなりたせん。 2番目の可胜性は、最初のEnterトリガヌ拡匵を䜜成し、2番目のEnterが実際にそれを実行するこずです。

䞀方、すべおの略語がナヌザヌによっお指定されおいる堎合、ナヌザヌが誀っお䜕かを実行する可胜性は䜎いため、Enterキヌを抌しお拡匵しおも問題ない堎合がありたす。

  1. 省略圢の拡匵圢匏は単なるテキスト眮換であり、それ自䜓が有効なコマンドである必芁はありたせん。 たずえば、匕甚笊や括匧が䞀臎しないような省略圢を䜜成できたす。 これは朜圚的に有甚な機胜だず思いたすが、それは、fishが略語を含むコヌドの構文チェックを実行できないこずを意味したす。぀たり、スクリプトでそれらを䜿甚できない可胜性がありたす。
  2. 省略圢の展開自䜓は、眮換の前にサブシェルおよび倉数の展開を受ける必芁がありたすか そうだず思いたす。それは圌らを非垞に柔軟にするからです。 略語は、任意の魚のコヌドを実行できたす。
  3. スペヌスを抌すず、省略圢が展開されお気が倉わった堎合は、削陀を抌しお展開を解陀できるはずです。

うたくいけば、しばらく圌らに䜏んでいた埌、私たちは䜕が正しいず感じるかを知るでしょう。

おかげで、私は今それを実行しおいたす、そしおそれは今のずころ本圓にうたくいくようです。

  1. 略語abbrを䜿甚できたす。 aliasに関しおは、それが良いず思うなら、おそらくこの振る舞いに眮き換えるこずができたす。 スクリプトで゚むリアスを䜿甚したい堎合は、関数のラッピングを行うだけで枈みたす。 略語は、人々が通垞゚むリアスを䜿甚しおいるものずたったく同じように思えたす。
  2. 略語を定矩したり削陀したりするためのヘルパヌ関数があればいいず思いたす。
    䟋 abbr gc 'git checkout'およびabbr -e gc 。
    私の意芋では、倉数を䜿甚しおこの操䜜を行うのは少し面倒です。 たた、略語が䞀意であるこずを確認するずよいでしょう。 したがっお、曎新するには新しいものを定矩するだけで枈みたす。
  3. 私は珟圚の動䜜を奜みたす。 git status gsような私の略語の倚くは、スペヌスを抌す必芁がある堎合はあたり圹に立ちたせん。 しかし、あなたが蚀ったように、私は実際にそれを実行するためにダブル゚ンタヌで倧䞈倫でしょう。
  4. 個人的には、スクリプトで䜿甚しなくおも倧䞈倫です。
  5. はい、これはかっこいいでしょう。 しかし、私の頭の䞊でそれを䜿甚するための略語を考えるこずはできたせん。
  6. たずえば、スペヌスを抌すのが早すぎお省略圢にならない堎合は、これも良い考えです。 これは、ダブル゚ンタヌずしおの3番目の提案ずもうたくいきたすただし、その远加の゚ンタヌが必芁かどうかはただわかりたせん。

aliasはずにかくPOSIX互換性ラッパヌです。 略語を䜿っおも問題ありたせん。 abbr gc 'git checkout'などを曞く堎合は、ずにかくgit checkout補完が必芁です。

過去数週間、terlarのスクリプト実装を䜿甚し、今日は新しいネむティブバヌゞョンに切り替えたので、ここにオヌプンポむントの2セントを瀺したす。

  1. 今すぐalias略語を付けさせるのは玠晎らしい考えだず思いたす。 ボヌナスずしお、珟圚の゚むリアスで機胜しない補完を修正したす。
  2. terlarが蚀ったこずはいいですね
  3. それらを実行するために略語でEnterキヌを2回抌す必芁がある堎合、それは本圓に私を悩たせたす。 Enterキヌを1回抌すだけで゚むリアスのように拡匵されずに機胜する堎合も問題ありたせんが、履歎に拡匵されおいない略語がありたす。
  4. -
  5. 倉数の展開は、倉数の内容がコマンドに入れられ、そのために履歎に入れられるこずを意味したせんか これにより、倉数が含たれなくなり、以前のコンテンツのみが含たれるため、履歎からのそのようなコマンドの再利甚性が倧幅に䜎䞋したす。 それずも私はこの点を誀解したしたか
  6. 3文字より長いabbreviation䜿甚しおいないため、展開解陀機胜を䜿甚しおいるずは思いたせん。぀たり、これらはすべお基本的に筋肉の蚘憶にあり、珟圚の行をクリアする方が速いでしょう。 これは、ネむティブ実装が行頭だけでなくどこでも䜿甚できるこずを考えるず、今では異なる可胜性がありたす。 しかし、それが垞にスペヌスを抌すか、Enterキヌを2回抌しお展開する必芁があるずいう意味ではない堎合は、おそらく良い考えです。

「略語」は長くお぀づりが難しいです。もっず良い名前を芋぀けるこずができたすか 「゚むリアス」は、他の甚途にただ䜿甚されおいない堎合に適しおいたす。 1぀の可胜性は、それを反転するこずです。たずえば、「拡匵」です。 fish_user_expansionsは私には問題ないように聞こえたす。

同意したしたが、「拡匵」では販売されおいたせん。

略語はどのように指定する必芁がありたすか gc = gitチェックアりト構文は軜量ですが、fishの他の堎所では䜿甚されおいたせん。

completeやbindたたはナヌザヌが呌び出すこずはできるが基になるストレヌゞが䞍透明なfunctionように、単に新しいビルトむンである必芁がありたす。

゚ンタヌでは拡匵せず、スペヌスのみを拡匵したい堎合がありたす。 Enterキヌを䜿甚しお展開するず、実行するこずを確玄するたで、実行したコマンドがナヌザヌに衚瀺されないずいう欠点がありたす。 スペヌスのみを展開する堎合、ナヌザヌは省略圢、スペヌス、Enterの順に入力できたすが、それほど負担にはなりたせん。 2番目の可胜性は、最初のEnterトリガヌ拡匵を䜜成し、2番目のEnterが実際にそれを実行するこずです。

私たちは本圓にEnterを拡匵したいず思いたす。 むラむラするfish: Unknown command “gc”たくさんあるず思いたすが、その䞭で䞀人でいるずは思いたせん。 ただし、展開は実行前にコマンドラむンで実行する必芁がありたす。これにより、スクロヌルバックで展開が衚瀺され、展開されたフォヌムが履歎に衚瀺されたす。

省略圢の展開自䜓は、眮換の前にサブシェルおよび倉数の展開を受ける必芁がありたすか そうだず思いたす。それは圌らを非垞に柔軟にするからです。 略語は、任意の魚のコヌドを実行できたす。

すべきではないず思いたす。 通垞は、コマンドラむンの実行時にこれらを展開するこずをお勧めしたす。 タむムスタンプ付きのメモを䜜成するための略語があるずしたす。 省略圢ずスペヌスを入力するず、 vim 12:34:56.txtように展開されたす。 ここで、このコマンドを数秒間実行しないず、タむムスタンプが間違っおしたいたす。 略語をvim (time +%T).txt拡匵した方がよいでしょう。 これは正しいこずであり、実行する前にコマンドラむンを線集するオプションがあるこずも意味したす。たずえば、別の時間圢匏を䜿甚する堎合などです。 たた、繰り返し可胜になりたす。 たずえば、 kill %firefoxは、PIDが倉曎された堎合でも、履歎から呌び出しお再実行できたす。 最埌に、コマンドラむンのトヌクンが実行時にのみ評䟡される他の魚ずの敎合性が高いず䞻匵したす。

䞀方、拡匵時の評䟡は、゚スケヌプなどでオプトアりトできるため、厳密に匷力ですが、それがないず、実際にはオプトむンできたせん。 ただし、これはナヌザヌが評䟡を制埡できるため、751で解決できるず思いたす。 それでも、略語の拡匵の_正確な_瞬間を取埗する方法は提䟛されたせん。 これは、ナヌザヌが個々のトヌクンを展開する瞬間です。 それでも、略語だけでなく、評䟡可胜なコマンドラむン䞊の任意のトヌクンでも機胜するため、より䟿利で䞀貫性があるず思いたすが、コマンドラむンに远加されたした。

スペヌスを抌すず、省略圢が展開されお気が倉わった堎合は、削陀を抌しお展開を解陀できるはずです。

省略圢の私の動機の䞀郚は、実行前に拡匵の_郚分_を埌線集する機胜であるため、これは削陀やバックスペヌスではいけないず思いたす。 おそらく、 commandline -p定矩されおいるように、「カヌ゜ルから珟圚のプロセスに逆方向に削陀する」ためのバむンディングを远加するこずをお勧めしたす。 これにより、略語の問題が解決されたすがコマンド䜍眮でのみ展開されるため、同時に略語なしで非垞に圹立ちたす。 これは基本的にCtrl-Uのように機胜したすが、珟圚の「プロセス」の開始時に停止したす。 珟圚のプロセスの_end_で停止するCtrl-Kに察応するバリアントを远加しお、䞀貫性を保぀こずができたす。これも圹立぀堎合がありたす。

これは、ネむティブ実装が行頭だけでなくどこでも䜿甚できるこずを考えるず、今では異なる可胜性がありたす。

@terlarの実装は詊しおいたせんが、これは、行の先頭だけでなく、_any_コマンドの䜍眮で拡匵が実際に正しく機胜する私のものに基づいおいたす。賞賛commandline -p 。 私は実際、抂念実蚌コヌドの倧たかな蚌明がどれほどうたく機胜するかに畏敬の念を抱いおいたす。 魚ハヌト

うヌん、他のコマンド䜍眮で実際に略語を䜿甚しようずしたこずは䞀床もないず思いたす。
ええ、プロトタむプはうたく機胜したしたが、私が持っおいた䞍䟿さは前述の貌り付けの問題でしたが、機胜はそれを䜿甚しないこずでした。

Ctrl-Yを䜿甚するず、 @ sch1zo貌り付けが機胜するはずです。

それは事実かもしれたせんが、ほずんどの堎合、遞択/ミドルクリックでコピヌ/貌り付けしたずころ、問題が発生しおいたした。 しかし、ネむティブ実装にはもうその問題はなく、私はすでにすべおのマシンを曎新しおそれを䜿甚しおいたす。

したがっお、ネむティブの略語を䜿甚しおから玄10日埌、私はその皮のバグを1぀芋぀けたした。 すでにコマンドを入力しおから、行の先頭にゞャンプしお省略圢を远加した堎合、コマンドは展開されず、展開されおいない状態では機胜したせん。 私の䞀般的な状況は次のずおりです。
私の省略圢の1぀は!=sudoなので、 vim /path/to/some/file/I/am/not/allowed/to/writeようにシステム構成ファむルを線集したいずき、sudoが必芁であるこずに気付くこずがよくあるので、通垞は最初にゞャンプしお!先頭に远加したす。 command not foundメッセヌゞを残したす。
これに察する私の珟圚の回避策は、省略圢の゚むリアスを远加するこずですが、それが適切に展開されるので、それはより良いでしょう。

同意したした。 単に「最初のトヌクン」ではなく、スペヌスが入力されたずきにカヌ゜ル䜍眮を確認する必芁がありたす。 たたは、最初にスペヌスを挿入しおから、コマンドラむンを再解析しお略語を展開したす。

コミットb6f495d1077b7627ea851da33936c77b2d594bb2は、 @ sch1zoが特定した問題を修正する必芁がありたすsudoの堎合は

これに远加するもう1぀のこずは、関数ではなく、デフォルトでll 、 laなどの゚むリアスを䜜成する必芁があるこずです。

この機胜はおそらく次のリリヌスで出荷されるため、これをnext-minorリタヌゲットしおいたす。

次のリリヌスは間もなく、぀たり来週の終わりたでになる可胜性がありたす。 珟圚、ドキュメントをクリヌンアップしおいたす。

略語は、珟圚の䞍完党な状態に含たれたす。 abbrevコマンドを取埗するたたはalias再利甚するたで、それらを公衚たたは文曞化したくありたせん。 そのため、私はこれを次のメゞャヌに抌し戻しおいたす。

aliasは良い甚語ではないず思いたす。 私にずっお、 aliasは別名です...拡匵するものではありたせん。

同じ理由で、私もabbr奜きではありたせん。

expand foo "foobar"に぀いお考えたした...しかしexpandコマンドはすでに存圚しおいるようです/残念ながら、 expandが最良の甚語だったず思いたす。

゚むリアスず略語を統合するのはどうですか 新しい関数を導入したり、 alias廃止したりする代わりに、「゚むリアスを拡匵する」ための構成オプションを導入したす。 ここでの欠点は、fishの構成オプションが奜きではないこずですただし、構成オプションをスキップするこずもできたす。おそらく良いこずですが通垞の関数を蚘述しお叀いものを取埗するこずはできたすが、2぀の動䜜を混圚させるこずはできたせん。゚むリアスの動䜜...利点は、同様のこずを行う2぀の方法がないこずです。説明が簡単で「゚むリアスは魚で展開する」、略語は実際にはスクリプトで機胜したす゚むリアスでもあるため。぀たり、シンタックスハむラむトでも倧文字ず小文字を区別する必芁はありたせん。 たた、゚むリアス機構をC ++コヌドに移動するこずで、珟圚の゚むリアス実装の速床䜎䞋を回避できたす。 ただし、拡匵されおいない゚むリアスに察しお補完を機胜させる方法を理解する必芁がありたす。

1぀の機胜リク゚スト...

以前は、関数を䜿甚しお、1回の操䜜でgit add、git commit、git pushなど、頻繁に䜿甚するコマンドの組み合わせを1぀のコマンドで発行しおいたした。

新しい略語機胜が倧奜きです。 私はそれが巚倧だず思い、それに切り替えようずしおいたす。 私はそれが単䞀のコマンド拡匵に制限されおいるずいう事実で倧䞈倫です。 ただし、䞀床に耇数のコマンドを発行したいのですが。 これで、最初のコマンドの省略圢、セミコロン、2番目のコマンドの省略圢などを䜿甚できたす。これは問題なく機胜したす。実際、この方法の方が良いず思いたす。

私の芁求は、拡匵がスペヌスたたは入力だけでなく、セミコロンによっおもトリガヌされるこずです。 セミコロンは基本的に遅延入力ず同等であるため、これは皆さんにも意味があるず思いたす。

この機胜が公匏リリヌスに登堎するのを埅ちきれたせん

私には理にかなっおいたす。

1a7b33e8fb75dd702730ca9637d760fbd23a4000は、セミコロンの略語を展開したす。

ありがずう

fish_user_abbreviationsはどこに保存されたすか それらをドットファむルリポゞトリに远加したいず思いたす。

珟圚はナニバヌサル倉数であるため、〜/ .config / fish /config.fishに保存されおいたす。 しかし、これは、それらを保存する適切な方法がわかるたでの䞀時的なハックにすぎたせん。 ここでのフィヌドバックは倧歓迎です。

必芁に応じお、config.fishにset -g fish_user_abbreviations...ような行を远加しお、手動で蚭定できたす。

うヌん、その倉数はそこにありたせん。

set -U fish_user_abbreviations 'g=git' 。 それをconfig.fishに取り蟌む正しい方法ですか

申し蚳ありたせんが、 ~/.config/fish/fishd.[mac_address]保存されるこずを意味したした。 明らかに、同期はMACからキヌオフされおいるため、蚭蚈䞊機胜したせん。

config.fishに配眮するには、 `set -g fish_user_abbreviations'g = git 'ず蚘述したす。 -gは毎回蚭定するため、グロヌバルの堎合。

ナニバヌサル倉数はかなりきちんずしおいるず思いたす。より良いUIをラップする必芁がありたす。

キヌず倀を分割するための=たたはASCII FS \x1c のいずれかを䜿甚しお配列ずしお䜿甚する堎合、それを管理するための魚関数 abbr + / -Webむンタヌフェむスペヌゞが圹立ちたす。

茞出/移転のための適切なアりトプットを生み出すこずを考えなければならないでしょう。

@ridiculousfishああ、ありがずう、それはずおも圹に立ちたす ゚クスポヌトのプロセスができるたで、今のずころそれを行いたす。

ずころで、私はAすべおの略語を含む単䞀のファむルたたはB略語ごずに個別のファむルを䜿甚するこずに䞭立です。 たぶんAに傟いおいたすが、匷くはありたせん。

既存の実装の呚りに基本的なUIをabbrずしお远加したした-詳现を衚瀺するにはabbr -hを䜿甚しおください。 たた、Webむンタヌフェむスに衚瀺専甚のUIを远加したしたが、それ以䞊のこずを行うずよいでしょう。

=を区切り文字ずしお䜿甚する代わりに、各配列項目の最初のトヌクンスペヌス区切りを䜿甚するだけで枈みたす。これにより、実装が簡玠化されたす。

ナニバヌサル倉数は適切ですが、盎接公開しない堎合は、 __fish_user_abbreviationsに移動する方がよい堎合がありたすロヌカルレベルたたはグロヌバルレベルでの蚭定に぀いお譊告する堎合もありたす。

=を区切り文字ずしお䜿甚するのでspace-separatedを䜿甚したいず思いたす。 特に、そのスタむルはfish内の他の堎所では䜿甚されおいないためです。

これはスペヌスで区切る必芁があるこずに同意したす。 これはもう少し意味があり、必芁に応じお=が実際には省略圢の䞀郚になる可胜性があるこずを意味したす。 abbrコマンドは、おそらく--addフラグを削陀し、代わりに2぀の匕数を取るように倉曎する必芁がありたす。

$__fish_user_abbreviationsに関しおabbrコマンドを䜿甚せずに$fish_user_abbreviations自分で倉曎したいず思う可胜性があるため、掚奚したせん。 $__fish_*倉数を盎接倉曎する人。 同様に、ロヌカルレベルたたはグロヌバルレベルで蚭定するこずは完党に合法です。 誰もがこのようなものにナニバヌサル倉数を䜿甚したいずは限りたせん。

関連する泚蚘ずしお、 readは、 --shellフラグを䜿甚する堎合、むンタラクティブ入力の省略圢を拡匵する必芁がありたす。

abbrコマンドの倖郚で倉数の倉曎を奚励するこずに関する私の懞念は、スコヌプをサポヌトするようにコマンドを拡匵するずUIの面で耇雑さが増すが、そうしないず誀解を招く可胜性のある結果に぀ながるこずです。 珟圚、可倉スコヌプのマヌゞはありたせん。これは混乱を招く可胜性がありたす。ナニバヌサル拡匵ず異なるグロヌバル拡匵を蚭定した堎合、䞡方ずも機胜する必芁がありたすか では、どのようにしおグロヌバルスコヌプの普遍的な拡匵を蚭定解陀したすか これは人々がやりたいず思うこずですか

スペヌスの分離は良い考えのように聞こえたす。 混乱を避けるために、新しい略語を远加するには、おそらく無制限の数の匕数を䜿甚する必芁がありたす。最初の匕数は「単語」になり、残りの郚分は結合されお「フレヌズ」になりたす。

「スコヌプをサポヌトする」ために䜜業を行う必芁はありたせん。 abbr単に$fish_user_abbreviationsを䜿甚する堎合、存圚する堎合はグロヌバル倉数を䜿甚し、存圚しない堎合はナニバヌサルを䜿甚したす。 これがたさにリヌダヌの仕組みです。 唯䞀の問題は、ナヌザヌがトップレベルのロヌカル倉数ずしお$fish_user_abbreviationsを蚭定した堎合、読者は実際にそれも芋るこずになるずいうこずです。 そしお、簡単な修正は、 -Sフラグをabbr関数宣蚀に远加するこずです。これにより、芪で定矩されたロヌカル倉数を衚瀺できるようになりたす。 ただし、略語をマヌゞしようずする必芁はたったくありたせん他のスコヌプで倉数を䞀時的に削陀する以倖は、マヌゞする方法もありたせん。

これに取り組んだ埌、略語を展開する前に、䞋線を匕いたり、別の方法で匷調衚瀺したりしたいず思いたす。 これにより、正しく入力したこずを確信できたす。 考え

スペヌス区切り文字のサポヌトはfbade198b942a666d3fc1110804a7da2c47918f1にありたす

スペヌスをヒットしおも拡匵されない堎合は、正しく入力しなかったこずがわかりたす。 私は䞋線や匷調衚瀺に反察しおいたせんがコマンドラむンが倉曎された理由をナヌザヌに知らせるための远加の手がかりになるこずは確かです、スペヌスを抌す前に自信が必芁な理由がわかりたせん。

@ridiculousfish fbade198b942a666d3fc1110804a7da2c47918f1に関しお、略語は十分に新しいそしお最近のマスタヌたで文曞化されおいないので、 =サポヌトを削陀する必芁がありたす。

スペヌス前のケヌスではなく、リタヌン前のケヌスに぀いお考えおいたす

私にはいいですね。 匷調衚瀺をやりすぎお、情報過倚が遅くなり、方向感芚が倱われる可胜性があるず思いたすが、ここではそうではないず思いたす。 たた、 $fish_color_abbr-or-whatever倉数を䜿甚するので、理由を問わず、垌望する人が簡単に無効にできるず思いたす。

最初は、自分が間違っおいお䞀貫しおいるこずに気付くたで、略語ず通垞のコマンドで匷調衚瀺の動䜜が異なるこずは盎感的ではないこずに気づきたした。

私の混乱は、ハむラむトず提案された完了機胜を混同しおいたずいう事実から来たした。

たずえば、「echo」ず入力するず、コマンド党䜓を入力するたで匷調衚瀺が赀になりたす。 ただし、提案された完了は、入力しようずしおいる内容を正垞に予枬し、意図した方向に向かっおいるずいう安心感を䞎えおくれたす。

略語に぀いおは、そのようなフィヌドバックはありたせん。これは、コマンドの蚘憶に残る短瞮、特に耇雑なコマンドに拡匵される短瞮を頻繁に思い付くこずができないため、残念です。

実際、私にずっおの目暙は、さたざたなコマンドを小さな名前空間にパックするこずです私は、最倧5文字の略語を撮圱し、数癟の略語を䜿甚しおいたす。 このため、有効なコマンドの入力に向かうシェルガむダンスにさらに倧きく䟝存しおいたす。 完了を瀺唆する圹割を果たすものがありたすが、通垞のコマンドではなく略語の堎合は、私にずっおも暙準のコマンドよりも非垞に圹立ちたす。

略語によっお提案された補完の難しさがわかりたす。 省略圢が実際のコマンドに展開されるのは盎感的ではありたせん。入力しおいる内容ず隣接しなくなるためです。 それでも、今より良くなるのではないかず思いたす。

少なくずも私にずっおは、提案された補完に略語自䜓拡匵ではないを含めるず、私のかゆみを掻き立おるでしょう。 定矩された略語のプレフィックスを正しく入力しおいるこずを確認したいだけです。 略語の蚘憶を間違えたり、入力を間違えたりしたため、無駄に入力しおいないこずを䌝えるにはこれで十分です。

abbr.fishを拡匵しお、スペヌスず=セパレヌタヌの䞡方を凊理しようずしたしたが、倖郚ツヌルを䜿甚せずに堅牢な゜リュヌションを考案するこずに成功しおいたせん。

=サポヌトを削陀する蚈画だず思いたしたか 私はそれを実行するこずを考えおいたした。そしお、人々がスペヌスに切り替えるために実行できる$ fish_user_abbreviationsを倉曎するスクリプトを䜿甚しお、fishメヌリングリストにメッセヌゞを投皿したした。

みなさん、

かなり長い間略語を䜿っおいたので、メモしたかったのです。

私は倧ファンで、圌らは私の人生をずっず楜にしおくれたす。 私が発行しおいるコマンドを他の人が芋慣れた圢で芋るこずができるずいう事実が特に気に入っおいたす。

私の唯䞀の嫌いな点は、略語の履歎がないこずです。 ほずんどすべおのコマンドに略語を䜿甚しおいるため、ほずんどの堎合、履歎機胜が倱われおいたす。 略語は履歎機胜を必芁ずしないほど短くする必芁があるず思われるかもしれたせんが、私はそれをかなり芋逃しおいるこずに気づきたす。 私は200以䞊の略語を定矩しおいたすが、そのうちのいく぀かはわずかに異なりたす。 たずえば、昚日発行したものを履歎に衚瀺しおもらうず、より耇雑で䜿甚頻床の䜎い略語に非垞に圹立ちたす。 私は実際には略語を䜿甚しおいるので、実際には履歎がないため、履歎のサポヌトが必芁な堎合は代わりに関数を䜿甚する必芁がありたした。

機胜をありがずう。

@binaryphile非垞に興味深い。 これがどのように芋えるか぀たりUIを念頭に眮いおいるようです。 もっず詳しく説明したすか

良い質問。 展開がトリガヌされた堎合は、省略圢を履歎リストに远加するこずをお勧めしたす。 したがっお、私の省略圢が「git clone」の「gclon」である堎合、スペヌスたたはセミコロンを抌すず、「gclon」が履歎に远加されたす。 展開されたコマンドを履歎に保存する通垞の動䜜を倉曎しないので、䞡方を䜿甚できたす。

その埌、略語のプレフィックス "gcl"などを入力し始めたずき、オヌトコンプリヌトがポップアップする最初のオプションは "gclon"であるず思いたす。

理想的には、その時点でalt-fを抌すず、拡匵バヌゞョンに自動的に完了し、さらに履歎からその拡匵コマンドの新しいオヌトコンプリヌトを提䟛できるようになりたす。 拡匵埌にさらに匕数を入力した可胜性があり、最初に入力したのず同じルヌト略語、匕数を介しお、できるだけ少ないキヌストロヌクで匕数を䜿甚できるようにしたいので、それが必芁です。 履歎の省略圢には匕数がないため、alt-fは、匕数ごずに完了匕数に沿っおさらに移動するための最も自然な方法です。

ctrl-fは倉曎されず、拡匵バヌゞョンではなく、省略圢の最埌に進むだけだず思いたす。䜕に拡匵するかに぀いおの芖芚的な手がかりがないためです。

私は぀いにこれをテストするために毎晩ビルドアップしお実行したした 私はこの機胜が本圓に奜きで、それに付属しおいるabbrコマンドがあるずいう事実が倧奜きです。

私のフィヌドバックは、ドットファむルバックアップ甚に゚クスポヌトするための良い方法が必芁だずいうこずです。 これらはすべおabbr --show出力の圢匏で1぀のファむルに入れるべきだず思いたす。 abbr --showは今のずころ私には十分です、私は今のずころそれらをドットファむルにパむプする぀もりです。 しかし、その時が来たら、それらを再びむンポヌトする簡単な方法が欲しいです。 したがっお、Fishがそのフォヌマットを今すぐむンポヌトできれば、それは良い次のステップになるでしょう。

ヘルプのコマンドに埓っお新しい略語を远加するず、この゚ラヌで倱敗したす。

selection_235

珟圚、 abbr -a "gco git checkout"を入力する必芁がありたすが、マニュアルに蚘茉されおいるケヌスをサポヌトする方が理にかなっおいるず思いたす。

ああ、ありがずう

48d3536はその倉曎を行いたす。

次のマむナヌリリヌスで「=」セパレヌタのサポヌトを残しお、その埌無効にするか、サむレントに人々のfish_user_abbreviationsアップグレヌドする必芁があるず思いたす。

これを修正枈みずしお閉じたす。 移行を远跡するために2051を提出したした。 コンセプトずそれをテストしたすべおの人に@dagに感謝し

W00t、みんなありがずう、私はこの機胜が本圓に倧奜きです!!

私は略語が倧奜きです、それぱむリアスよりもはるかに友奜的な経隓です。 本圓にありがずう

ドットファむルに略語を保存する方法を芋䞊げながら、私はこのスレッドに出くわした1 、 2 。
同じ理由で誰かがここで぀たずいた堎合は、 abbr -s/--show䜿甚できたす。 䟋えば

abbr --show >> ~/.config/fish/config.fish

@dideler自動バックアップに䌌たものを䜿甚しおいたすが、 sortパむプするこずもお勧めしたす。

abbr --show | sort > fish_abbreviation_backup;

すべおをfish_abbreviation_backupファむルに入れ、それをHomeshickに远加しおバックアップしたす。 ただし、すべお自動化されおおり、cronで実行されたす。 Iバックアップ私の埌にsource fish_abbreviation_backupやっおいる魚が瀺すアルファベット順ので、 abbr --show 。

関数を䜿っお物事を行うのず同じように、魚が略語をファむルに保存しおおけばいいでしょう。

曎新保存時に略語を䞊べ替える問題-> https://github.com/fish-shell/fish-shell/issues/2156

魚が略語をファむルに保存しおおけばいいのに...

マニュアルペヌゞから「略語はナニバヌサル倉数を䜿甚しお保存されたす。」 ぀たり、それらは_〜 / .config / fish / fishd.macaddr_ファむルの倉数名fish_user_abbreviationsたす。 abbrコマンドは、そのナニバヌサル倉数を操䜜するだけです。

おかげで、ドットファむルに簡単に远加できるように、それらを〜/ .config / fish /abbreviations.fishに保持するずいうアむデアを怜蚎しおも倧䞈倫ですか

@ElijahLynn 私がしおいるこずは、〜/ .config / fish / conf.d /に "abbrs.fish"ずいうファむルがあり、その内容は次のずおりです。

if not set -q fish_initialized
    abbr -a alsamixer alsamixer -c0
    abbr -a e emacs -nw
    abbr -a \$PAGER less
    abbr -a mu4e emacs --eval "\(mu4e\)"
    abbr -a pm pulsemixer
    abbr -a rm rm -I
    abbr -a sc systemctl
    abbr -a upo upower -i /org/freedesktop/UPower/devices/battery_BAT0
    abbr -a usc systemctl --user
    # Double-escaping needed
    abbr -a d2 env WINEPREFIX=/home/alfa/.wine32/ wine ~/.wine/drive_c/Program\\ Files\\ \\(x86\\)/Diablo\\ II/Diablo\\ II.exe
    abbr -a c curl -LO -C -
    set -U  fish_user_paths ~alfa/.local/bin $GOPATH/bin
    set -U fish_initialized
end

これはドットファむルにあり、ただ䜿甚しおいない任意のマシンにドロップできたす。abbrをリセットする堎合は、すべお消去できたす set -e fish_user_abbreviations; set -e fish_initialized 。魚を再起動したす。

おかげで、私はこれを芋逃しおいるかもしれたせんが、手動でそれを維持する必芁があり、 abbrコマンドでそれらを簡単に远加管理するこずができないようです。

そこにabbrコマンドを远加したす。 これは、 abbr --show呌び出しの出力である堎合もありたす。

コマンド䜍眮でのみ、おそらく良いスタヌトです。 次に、前に提案した匕数䜍眮のナヌスケヌスを詊すこずができたす。

私はスタヌトでポゞションだけでなく䞀握り、䞀䟋だず思うsのためにsudoずnに぀いおnanoそこから猶が膚匵s nからsudo nanoですが、珟圚の実装ではありたせん。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡