2015-05-19 14 views
5

Ogni volta che si naviga più in profondità in una directory, zsh visualizza il percorso completo nel prompt.zh accorciare la lunghezza del percorso corrente

Invece di visualizzare

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

avrei preferito piacerebbe avere

[email protected]:~/path/somewhere

Come posso raggiungere questo obiettivo?

Sto usando zsh con iTerm su OSX Yosemite 10.10.4.

EDIT:

Ecco il mio bashrc file:

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

correlati: [Mostra solo nome della directory corrente (non percorso completo) il prompt di bash] (http://superuser.com/q/60555/204979). Nella risposta accettata puoi trovare alcune informazioni utili sull'ottimizzazione di 'PS1'. – fedorqui

+0

La risposta accettata dice qualcosa su un '\ W' maiuscolo. Ho aggiornato la mia domanda con il mio file bashrc. PS1 è già impostato su \ W, quindi sfortunatamente questo non mi aiuta. Altre raccomandazioni? – sqe

+0

Considera di passare attraverso i collegamenti forniti in quella risposta. Inoltre, l'attuale PS1 che hai non corrisponde alla definizione qui indicata. Vorrei 'grep' per ulteriori definizioni di' PS1' nei tuoi file di configurazione. 'grep PS1 ~ /.*' – fedorqui

risposta

14

per specificare un numero di componenti finali indicati del percorso inserire un intero in corrispondente sequenza di escape nel prompt. Nel tuo caso, %2~ farà il trucco. Estratto dal 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). 
Problemi correlati