Zsh isteminde yolu kısalt


18

BashPROMPT_DIRTRIM, örneğin ben ayarladığınızda PROMPT_DIRTRIM=3, sonra gibi uzun bir yol seçeneği vardır :

user@computer: /this/is/some/silly/path

bunun yerine şöyle görünecektir:

user@computer: .../some/silly/path

Benzer bir seçenek var zshmı?

Yanıtlar:


22

Benzer bir etki elde etmek için bash, aşağıdakileri içerir ...:

%(4~|.../%3~|%~)

Bu, yolun en az 4 eleman uzunluğunda ( %(4~|true|false)) olup olmadığını kontrol eder ve eğer doğruysa, son 3 elemanla ( .../%3~) bazı noktalar yazdırır , aksi takdirde tam yol yazdırılır %~.


Bunu farkettim bashörneğin, farklı ev dizininde yolları kısaltmak gibi görünüyor:

~/.../some/long/path

Benzer bir etki için, aşağıdakileri kullanmak isteyebilirsiniz:

%(5~|%-1~/…/%3~|%4~)

Bu, yolun 5 öğeden uzun olup olmadığını kontrol eder ve bu durumda ilk öğeyi ( %-1~), bazı noktaları ( /…/) ve son 3 öğeyi yazdırır . Ana dizininizde olmayan yollarla tam olarak aynı değildir, başlangıçta ilk öğeye de sahip olurken, bashyalnızca bu durumda noktalar yazdırılır. Yani

/this/…/some/silly/path

onun yerine

.../some/silly/path

Ancak bu mutlaka kötü bir şey olmayabilir.


1
Ben gösteriyor ki ilk daha iyi sürümü, ancak not gibi ~/a/bolduğu .../a/byerine ~/a/b. Bunu düzeltmek için kullanabilirsiniz %(5~|…/%3~|%~).
momar

Zsh (benim gibi) için yeni olanlar için, bu sözdizimini PROMPTortam değişkeninizle birlikte kullanmak istersiniz .zprofile, örneğin:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
Ryan H.

1
@RyanH. Teşekkürler, cevabımı tekrar okuduğumda, bu ayarların nerede yapılması gerektiğini hiç söylemediğimi fark ettim. Bunu düzeltmem gerekecek. Yorumunuzla ilgili iki küçük şey: etkileşimli kabuk oturumları için ayarlar yapılmalıdır .zshrcve gerçekten exportkabuk iç parametrelerine gerek yoktur PROMPT.
Adaephon

@Adaephon Bilgi için teşekkürler. Düzelteceğim! :)
Ryan H.

8

Burada verilen diğer cevaplara ek olarak, %<belirli sayıda karaktere giden yolu kısaltmak için de kullanabilirsiniz . Bunu kullanmak için tercih edilir buluyorum %<n>d, çünkü bireysel yol elemanları kendi başlarına oldukça uzun olabilir. Kullanmak %<çok daha öngörülebilir bir maksimum istem uzunluğu sağlar.

Örneğin, %~kaldırılan karakterlerin yerine tilde genişletme ( ) ile yol öğesini 15 karaktere kadar kısaltmak ..için şöyle bir şey yapabilirsiniz:

PROMPT='%n@%m:%15<..<%~%<<%# '

Bu, Zsh kılavuzunda sayfanın sonundaki İstem Genişletme altında belgelenmiştir .


4

%3d Hızlı genişletmeyi kullanabilirsiniz :

/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $

Genel form, %dherhangi bir pozitif tamsayı takip dgeçerli yolu göstermek için arka bileşenleri belirtirse, sıfır ortalama tüm yolu gösterir, negatif tamsayı gösterilecek öncü yol anlamına gelir:

.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $

3

Bkz. Http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html veyaman zshmisc

%d
%/
Current working directory. If an integer follows the ‘%’, it specifies a number of trailing components of the current working directory to show

%~
As %d and %/, but if the current working directory starts with $HOME, that part is replaced by a ‘~’.

Yani benzer bir şey almak için PROMPT_DIRTRIM=3şunu kullanabilirsiniz %3dya %3~, mesela

% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d% 

Bu bashdaki gibi "..." i göstermeyecek.
Elronnd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.