zshタブが完了しました。到着/

zshタブが完了しました。到着/

重複しない:
私はディレクトリ名を完成させたり、固定ディレクトリでスクリプトを実行する方法を探していません。私が解決しようとしている問題は完了することです。現在の目次いいえ緊急/


.私はzshがbashのようにタブ補完を使うことができたらと思います./

.TABTABbashを使用すると、を押してすべてのファイルを表示することに慣れます。現在の作業ディレクトリ最初に完了して./から、そのディレクトリのすべてを表示するためです。私が/何とか避けたいのは、ドイツ語のキーボードでは、2本の指とShiftを使用したり、数字パッドから離れているよりもはるかに難しく、/aを入力するよりもbashに戻す方が良いからです。私が達成したいこと、つまりbashがすることは次のとおりです。TAB/

$ .               <TAB>
$ ./              <TAB>
foo.sh   somedir/
$ ./              <F><TAB>
$ ./foo.sh        <ENTER>

zsh / oh-my-zshを使用すると、をクリックすると(ドットスペース)が.TAB表示されますが、.これはまったく役に立ちません。

  • zstyle ':completion:*' special-dirs truewith setopt auto_cd(oh-my-zshデフォルト)を使用すると、topオプションがはるかに少なく便利になり、../このオプションをオフにしました。出来上がって嬉しいですねcd
  • .開いておらず、$PATHそのままにしておく必要があります。f<TAB>たとえば、完了しても./foo.sh大丈夫です。

.zshがローカルディレクトリの内容を即座にまたはより効果的に完了するようにどのように教えることができますか./?それとも、含まない効率的な方法でローカルスクリプトファイルを処理する他の方法はありますか/

ベストアンサー1

偉大な挑戦!コマンドラインで試してみて動作する場合は、~/.zshrcに追加してください。

bindkey '^I' dotcomplete
zle -N dotcomplete
function dotcomplete() {                                        
  if [[ $BUFFER =~ ^'\.'$ ]]; then
    BUFFER='./'
    CURSOR=2
    zle list-choices
  else
    zle expand-or-complete
  fi
}                    

TAB(^I) を押すたびに実行される関数を追加します。現在入力されている行に点(^ =行の始まり、 '\.' =スーパーエスケープ点、$ =行の終わり)のみが含まれている場合は、点を./に置き換えて通常の完成を続けます。

それはあなたが要求したことを正確には行いません。つまり、そのポイントを現在のディレクトリとして扱うことです。ただし、保存したいキーストロークが保存されます。

おすすめ記事