zshで〜の後にユーザーが完了できないようにする


1

私はzshの名前付きディレクトリ機能を使って私のファイルシステムを素早く移動するのが好きです(例えば〜srcを使って私のソースコードディレクトリに切り替えることができます)。

私はzshの自動補完機能も好きです。

しかし、私は多くのユーザーがいる環境で仕事をしているので、 "cd〜s"とタイプしてtabを押すと、 "〜src"を完成するのではなく、sで始まるすべてのユーザーに一致させることができます。 "

私はこの環境でユーザ名を補完することをあまり気にしていません(自分のものを除いても、私はそれなしでも生きることができます)。これを無効にする簡単な方法はありますが、それでも名前付きディレクトリを拡張し続けるのでしょうか。

回答:


2

の後に呼び出される関数 ~ と呼ばれる _tilde (それはだから と宣言 compdef -tilde- )あなた自身の関数を定義します。

_bangfalse_tilde () {
  # The standard _tilde function with users removed
  [[ -n "$compstate[quote]" ]] && return 1
  local expl suf ret=1
  if [[ "$SUFFIX" = */* ]]; then
    ISUFFIX="/${SUFFIX#*/}$ISUFFIX"
    SUFFIX="${SUFFIX%%/*}"
    suf=(-S '')
  else
    suf=(-qS/)
  fi
  _tags users named-directories directory-stack
  while _tags; do
    _requested named-directories expl 'named directory' compadd "$suf[@]" "$@" -k nameddirs && ret=0
    _requested directory-stack && _directory_stack "$suf[@]" && ret=0
  done
  (( ret )) || return 0
}
compdef _bangfalse_tilde -tilde-
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.