2015-05-19 2 views
5

Всякий раз, когда я перехожу глубже в каталог, zsh отображает полный путь в подсказке.zsh сокращение длины текущего пути

Вместо отображения

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

Я скорее хотел бы иметь

[email protected]:~/path/somewhere

Как я могу добиться этого?

Я использую zsh с iTerm на OSX Yosemite 10.10.4.

EDIT:

Вот мой 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

Связанные: [Показать только имя текущего каталога (не полный путь) на Баш строке] (http://superuser.com/q/60555/204979). В принятом ответе вы можете найти хорошую информацию о настройке 'PS1'. – fedorqui

+0

Принятый ответ сообщает что-то о верхнем регистре '\ W'. Я обновил свой вопрос с помощью файла bashrc. PS1 уже установлен в \ W, поэтому, к сожалению, это не помогает мне. Какие-либо дополнительные рекомендации? – sqe

+0

Рассмотрите возможность прохождения ссылок в этом ответе. Кроме того, текущий PS1, который у вас есть, не соответствует указанному здесь определению. Я бы 'grep' для получения дополнительных определений' PS1' в ваших конфигурационных файлах. 'grep PS1 ~ /.*' – fedorqui

ответ

14

Чтобы задать количество показываемых задних компонентов пути вставить целое число в соответствующую управляющую последовательность в вашей строке. В вашем случае %2~ сделает трюк. Выдержка из 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). 
Смежные вопросы