2015-05-19 21 views
5

Ilekroć nawiguję głębiej w katalogu, zsh wyświetla pełną ścieżkę w monicie.zsh skróć długość bieżącej ścieżki

Zamiast wyświetlać

[email protected]:~/i/am/a/really/really/really/really/long/path/somewhere

wolałbym lubią mieć

[email protected]:~/path/somewhere

W jaki sposób można to osiągnąć?

Używam zsh z iTerm na OS X Yosemite 10.10.4.

EDIT:

Oto mój plik .bashrc:

1 # System-wide .bashrc file for interactive bash(1) shells. 
    2 if [ -z "$PS1" ]; then 
    3 return 
    4 fi 
    5 
    6 PS1='\h:\W \u\$ ' 
    7 # Make bash check its window size after a process completes 
    8 shopt -s checkwinsize 
    9 # Tell the terminal about the working directory at each prompt. 
    10 if [ "$TERM_PROGRAM" == "Apple_Terminal" ] && [ -z "$INSIDE_EMACS" ]; then 
    11  update_terminal_cwd() { 
    12   # Identify the directory using a "file:" scheme URL, 
    13   # including the host name to disambiguate local vs. 
    14   # remote connections. Percent-escape spaces. 
    15   local SEARCH=' ' 
    16   local REPLACE='%20' 
    17   local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}" 
    18   printf '\e]7;%s\a' "$PWD_URL" 
    19  } 
    20  PROMPT_COMMAND="update_terminal_cwd; $PROMPT_COMMAND" 
    21 fi 
+1

pokrewne: [pokaż tylko nazwę bieżącego katalogu (nie pełna ścieżka) na wierszu bash] (http://superuser.com/q/60555/204979). W zaakceptowanej odpowiedzi możesz znaleźć dobre informacje na temat strojenia "PS1". – fedorqui

+0

Przyjęta odpowiedź mówi coś o wielkiej literie "\ W". Zaktualizowałem swoje pytanie za pomocą mojego pliku bashrc. PS1 jest już ustawione na \ W, więc niestety to mi nie pomoże. Jakieś dalsze rekomendacje? – sqe

+0

Rozważ przeglądanie linków podanych w tej odpowiedzi. Obecny PS1 nie pasuje do podanej tu definicji. Chciałbym "grep" na więcej definicji "PS1" w twoich plikach konfiguracyjnych. 'grep PS1 ~ /.*' – fedorqui

Odpowiedz

14

Aby określić liczbę pokazanych elementów ciągnących ścieżki wstawić liczbę całkowitą w odpowiedniej sekwencji ucieczki w swoim wierszu. W twoim przypadku, %2~ załatwi sprawę. Fragment zshmisc (1):

%d 
%/  Current working directory. If an integer follows the `%', 
     it specifies a number of trailing components of the current 
     working directory to show; zero means the whole path. A 
     negative integer specifies leading components, i.e. %-1d 
     specifies the first component. 

%~  As %d and %/, but if the current working directory starts 
     with $HOME, that part is replaced by a `~'. Furthermore, if 
     it has a named directory as its prefix, that part is replaced 
     by a `~' followed by the name of the directory, but only if 
     the result is shorter than the full path; see Dynamic and 
     Static named directories in zshexpn(1).