powerline10k / zshでより短いパスヒントを取得する方法は?

powerline10k / zshでより短いパスヒントを取得する方法は?

みんな!

iterm2(zsh、oh-my.zsh、およびpowerline2を使用)ターミナルから特定のディレクトリに移動すると、次のプロンプトが表示されます。

$ pokemon/electric/pichu/pikachu/raichu

私は次のように短いですが、まだ完全なパス表現を望んでいます。

$ P/E/P/P/raichu

この構成を見たことがありますが、設定できませんでした。

======編集======グラフィックの例: ここに画像の説明を入力してください。

助けてもらえますか?

よろしくお願いします!

答え1

次のことができます。

$ set -o extendedglob -o promptsubst
$ PS1='${${${PWD/#%(#b)$HOME(|\/*)/

答え2

  1. ファイルを編集する必要があります.p10k.zsh(私の場合はzsh / oh-my-zsh / iTermでpowerlevel10kを使用しています)。
    nano .p10k.zsh
    
    (または必要な他のエディタを使用してください)。
  2. 行を検索しtypeset -g POWERLEVEL9K_SHORTEN_STRATEGY 、次の値を追加します。
    typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_from_right
    
  3. 次の行を検索してtypeset -g POWERLEVEL9K_SHORTEN_DELIMITER スペースに設定します。
    typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
    
  4. 最後に、行を検索しtypeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH て値1を追加します。
    typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
    

次の内容を表示できるはずです。
ディレクトリが「~/D/I/L/[/3/1/Workbook」として表示されるプロンプトのスクリーンショット


標準のzshテーマ(powerlevel10kテーマなし)を使用している場合は、次のことを試すことができます。

次に追加~/.zshrc:

setopt prompt_subst
PROMPT='\$ /$(printf "%c/" ${(s./.)PWD:h})${PWD:t} '
  • (s./.)– でパスを分割します/
  • printf "%c/"- 各ディレクトリフラグメントの最初の文字を印刷します。
  • ${PWD:h}- 現在のディレクトリの「ヘッド」、つまり最後の要素を除くすべて。
  • ${PWD:t}- ディレクトリパスの「tail」/最後の要素。

から抜粋Guerfoorの答え到着魚の機能はプロンプト_pwdですが、zshでは?

答え3

リンクを作成できます。

ln -s pokemon P

cd pokemonその後、orを実行するとcd P同じディレクトリになります。

答え4

私はこのテストをしました:

pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print $i}}'
result : /opt/tools/intel/oneapi

それからこれ:

pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print substr($i,1,1)}}'
result : /o/t/i/o

したがって、bashrcを次のように修正してみることができます。

function generate_pwd { 
pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print substr($i,1,1)}}' 
}
export PS1="\$(generate_pwd) => "

うまくいきます。

関連情報