タグ付けされた質問 「autocomplete」

シェルやテキストエディターなどの対話型プログラムによって提供される機能で、ユーザーが作成する可能性の高い単語または語句を完成させるためにテキストを挿入します。


2
インテリジェントな補完が失敗した場合にBashの通常のタブ補完を強制する
タブ補完がシェルの標準機能になったので、私はそれをとても幸せに使用しています。私はBashのインテリジェントな補完(evince foo <TAB>と入力するとPDFファイルのみを検索する)も気に入っています。 Bashがインテリジェントな補完を使用して補完を拒否した場合、それ以外の場合は幸せな日を台無しにします。 今日私はしたかった: tar xvf centos5.8_x86_1.ova だから私は入りました: tar xvf cent<TAB> .ova-filesは通常tarで使用するものではないため、Bashはパスの完成を拒否します。 私はbash-completionパッケージをアンインストールしてインテリジェントな補完を削除できることを知っています。でもケーキを持って食べてもいいですか? 最初にインテリジェントな補完を使用するようにbashに要求できますが、それが失敗した場合は、インテリジェントでない補完を使用できますか?

2
ディレクトリ名を保持する環境変数のBashオートコンプリート
特にLinux Mint 14でbash 4.2.37を使用しています。 と入力して環境変数の名前をオートコンプリートするTabと、変数名の後にスペースが続きます。 変数の値がたまたまディレクトリ名である場合は、変数名の後にを続けて展開します/。 たとえば、次のように入力すると、 $ ls $HOM<tab> 次のように展開されます。 $ ls $HOME _ where _はカーソルの位置を示します。問題は、私はその後、通常私が入力しなければならないことを意味自分のホームディレクトリの下にいくつかのファイルまたはディレクトリの名前を入力し続けていきたいということでbackspace、その後と/。 私はそうしたい上記にまで拡大します。 $ ls $HOME/_ 変数名全体を入力したときにも同じことが起こります。の後ls $HOME、tabスペースを追加し、それに/。 (もちろん/、変数の値がディレクトリ名でない場合は、を追加したくありません。) bashコマンドを使用するか、bashコマンドを更新することで、bashに希望どおりの動作をさせることができる方法はありますか$HOME/.inputrc? 注:私は特にtab私が望むように動作させる方法を探しています。異なるキーストロークで同じ動作を実現する方法は興味深いでしょうが、私の質問には答えられません。 (/etc/profile.d/bash_completion.shシステムとの相互作用が不十分なため、システムで無効にしましたset -o nounset。簡単な実験により、これはおそらく私の質問には関係ないことが示されています。) ちなみに、tcshはこれを行います。環境変数$FOOBARを指定$FOOBA<tab>する$FOOBAR/と、ディレクトリを参照している場合は$FOOBAR(スペース付きで)参照している場合、タイピングは展開されます。いいえ、tcshに戻るように説得するには十分ではありません。zshもこれを行います。

1
zsh補完:特定のディレクトリからファイル名を取得する
OK、少し背景:私はMacを使用し、CLIで可能な限り多くのことを行います。 特に、USBスティックcpやmvファイルを頻繁に差し込み、すぐに取り出し(アンマウントして切断)したいと思っています。これは通常、いくつかのキーストロークで実行できますが、マウントを解除するには(10.7では)空のデスクトップスペース(通常は少なくとも2スペース離れている)に移動してディスクを選択し、「command-e」を押す必要があります。率直に言って、このアンマウント手順は、数桁も、プロセスの中で最も時間がかかり、退屈な部分です。 次のように単純にタイプできるほうがはるかに自然で効率的です。 ej<tab> J<tab> 私のUSBスティックマウントが/ Volumes / Jeffersonにあると言います。私の6つのキーストロークから得られるものは次のとおりです。 eject /Volumes/Jefferson これはコマンドを実行するはずです: diskutil unmount /Volumes/Jefferson だから、私は素敵な小さな関数を書きました: eject() { diskutil unmount /Volumes/$1 } そして、それに伴う補完関数: compdef '_files -g "/Volumes/*"' eject ただし、これには問題があります。_filesこの関数は、完全なパスを生成します。これで、「eject」関数の行をに変更できdiskutil unmount $1、動作しますが、パスが/ Volumes /で始まるため、マウントポイント名の最初の文字を入力することができません。たとえば、と入力J<tabすると、PWD内のファイルのオートコンプリートが表示されます。/Volumes/J<tab>必要な補完を取得するには、入力する必要があります。 では、完全なパスを生成するのではなく、事前定義された特定の場所からファイル名を取得する補完関数はありますか? 私はこれを6回のキーストロークまで下げたいと思っています。
10 zsh  osx  autocomplete 

2
zshタブ補完をキャンセル
完了した完了をキャンセルする方法はありますか?時々愚かにタブを押してターゲットをオートコンプリートし(純粋な怠惰からのみ)、自分で「インストール」または「チェックアウト」の全体を入力した場合よりも長い時間待つ必要があります。 zshzleのmanページに注目すべき点は何もありませんでしたが、何かを見落としましたか?他のシェルにこの機能はありますか? 編集:ささいな答え。したがって、代わりに:zshがタブの完了に実行に比較的長い時間がかかると推定し、代わりにユーザーがこれを実行するかどうかを尋ねる方法はありますか?
10 zsh  autocomplete 

1
シェル関数でzshの既存のオートコンプリートを利用するにはどうすればよいですか?
いくつかのシェル関数が自分.zshrcで定義されており、入力を省略して画面との統合を可能にします。例えば: function s() { screen -t "$1" ssh "$@" } ただし、これらのシェル関数を使用すると、zshに組み込まれているコマンド補完機能を利用できません。(SSHの場合、known_hostsおよびssh_configに基づいてホスト名を自動的に補完します)。ラッパーを作成したコマンドの既存の補完メカニズムにフックするための好ましい方法は何ですか? 編集: 以下の答えをくれたGillesに感謝します。これを行うにはcompdefを使用する方法のように見えますが、興味深いことに、均一に機能するようには見えません。この場合、私は次の設定をしています: function s() { screen -t "$1" ssh "$@" } function m() { screen -t "man.$1" man "$1" } compdef $_comps[man] m compdef $_comps[ssh] s ラッパー関数「m」の補完は期待どおりに機能しますが、関数「s」の補完は機能しません。ホスト名を完成させるのではなく、「タブ」を押すとファイルのリストが表示されるため、デフォルトのオートコンプリートにフォールバックするようです。SSH完了の処理方法に奇妙な点がありますか?これは、さらに何かをする必要があることを意味しますか?
10 zsh  autocomplete 

4
現在のパスにあるすべてのファイル/バイナリを一覧表示します
現在のPATH内のすべてのファイル/実行可能バイナリを一覧表示するための「ls -la」スタイルのコマンドを実行する「簡単な」方法はありますか? (私は出力をgrepにパイプして、プレフィックスは不明であるが基本的には「名前」がわかっているコマンドを探すために、bashのオートコンプリート/タブ移動が本質的に役に立たない場合の種類です。したがって、ある種の「逆オート完全な機能」...)
10 bash  ls  path  autocomplete 

1
zsh aptリストオプションの完了
私はbashでタブ補完を使用してをapt list --upgradable入力して取得することに慣れていますがapt ltab--utab、zshで同じことを行うことはできません。を押し--uても展開されません。--upgradabletab zsh-completionsのインストールとへの追加setopt completealiasesを提案するいくつかのソリューションをグーグルアップしました./zshrcが、どちらも役に立ちませんでした。 bashのように機能させる方法はありますか?
10 zsh  autocomplete 

2
zshのタブ補完と大文字と小文字を区別しないことの組み合わせ
大文字小文字を区別しないタブ補完を使用するようにzsh 5.0.7を構成しています zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 私が抱えている問題は、この場合の鈍感さは、しばしば私がTab余分な時間を押す必要につながるということです。たとえば、私のホームディレクトリには、「デスクトップ」、「ドキュメント」、「ダウンロード」というフォルダが含まれています。ホームフォルダーにいて、次のように入力した場合 cd D 次にを押すTabと、3つの可能性が表示されます。一方、入力すると cd d 次にTab「d」を押すと「D」に変わりますが、完了メニューが表示されません。Tabそのためには、もう一度押す必要があります。「d」が「D」に変更されると同時に完了メニューを取得する方法はありますか?
10 zsh  autocomplete 

3
VIM(BashまたはTmux)のように画面上の単語の補完
画面で最後に一致する識別子を完了するようにBash、Zsh、またはTmuxを構成するにはどうすればよいですか?次の一般的なシナリオを検討してください。 $ git fetch remote: Counting objects: 16, done. remote: Compressing objects: 100% (9/9), done. remote: Total 9 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. From /opt/git/thunder * [new branch] issue540 -> origin/issue547314 e9204cf..4d42c3f v2.1 -> origin/v2.1 issue547CLIでBash / Zsh / Tmuxを簡単に完了するにはどうすればよいですか?Git が問題なく完了したTab後にを押すと、数字を自分で完成させる必要があります。なぜなら、前のすべての数字は実際には既存のGitブランチと一致するからです。$ git checkout isissue …

2
bashタブ補完の更新
私のssh-hostsをオートコンプリートするためのスクリプトがあります。~/.ssh/configただし、変更すると、オートコンプリートは自動的に更新されません。これは私を驚かせません。もちろん、新しいシェルでは、新しいエントリが取得され、使用可能になります。 bashで完了の更新を手動でトリガーするにはどうすればよいですか?

1
zsh-<tab>のバイナリパスを完全に展開する
私の現在のzsh動作では、「sudo」と入力した後でタブを押すと、スペースが追加されるだけです。 $ sudo ... 私が本当に望んでいるのは、タブを押したときに実行しようとしているバイナリのパスにタブを完全に拡張して、何が実行されるかを確認できるようにすることです。 $ /usr/bin/sudo ... 目的は、私のマシンのローカルユーザーがハッキングされ、$PATH変数にエントリが追加され、'sudo'が悪意のあるプログラムを実行するケースから保護することです。これにより、ルートに簡単にエスカレーションされます。
10 zsh  path  autocomplete 

3
どうすればbashのオートコンプリートワイルドカードを使用できますか?
ファイルを含むディレクトリがある場合 foo.bar.a.cat foo.bar.a.hat ls f+ TABbashシェルをオートコンプリートして+ と入力しls foo.bar.a.ます。私が入力した場合ls *bar*+ TAB私はそれがオートコンプリートしたいと思います*bar*.a.。これは可能ですか? これは質問に似ています bashでワイルドカードのタブ補完を有効にする方法は? しかし、「私にとっては箱から出してすぐに機能します」という提案された答えは機能しません。私も試しましたがTAB TAB、効果はありません。コマンド `` bash --version givesGNU bash、version 4.2.37(1)-release(x86_64-pc-linux-gnu) `。

3
(関数の)2番目の引数のZshオートコンプリートルールを既存のコマンドのルールに設定するにはどうすればよいですか?
私が持っているカスタムZshの機能をg: function g() { # Handle arguments [...] } その中で、Gitコマンドを実行する短い引数を処理します。例えば: g ls # Executes git ls-files ... g g # Executes git grep ... オートコンプリートルールを短い引数のGitのルールに設定できるようにする必要がありますが、これを行う方法がわかりません。 たとえば、次の引数が得られるg ls &lt;TAB&gt;ルールをタブ補完する必要があります。git ls-files &lt;TAB&gt;git ls-files $ g ls --&lt;TAB&gt; --abbrev -- set minimum SHA1 display-length --cached -- show cached files in output --deleted -- …
9 zsh  autocomplete  git 

1
Zshオートコンプリートで完全な関数を提案(_git _vimなど)
zshコマンドに対する完全な提案をどのように行っているかについて、少し不快です。 インストールしていないコマンドの先頭を入力して押すtabと、インストールされている補完機能が表示されます。 実行したいのですvimが、インストールされていないと表示され_vimます。 これをオフにする方法はありますか?または、セットアップで何か間違ったことをしましたか? 私のすべてのドットファイルはで公開されていgithub.com/henrikbjorn/castleます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.