Respuestas:
Para obtener un efecto similar bash, que incluye el ..., intente:
%(4~|.../%3~|%~)
Esto verifica si la ruta tiene al menos 4 elementos de largo ( %(4~|true|false)) y, si es verdadero, imprime algunos puntos con los últimos 3 elementos ( .../%3~), de lo contrario se imprime la ruta completa %~.
Noté que bashparece acortar las rutas en el directorio de inicio de manera diferente, por ejemplo:
~/.../some/long/path
Para un efecto similar, es posible que desee utilizar:
%(5~|%-1~/…/%3~|%4~)
Esto comprueba si la ruta es más larga que 5 elementos, y en ese caso imprime el primer elemento ( %-1~), algunos puntos ( /…/) y los últimos 3 elementos. No es exactamente lo mismo que las rutas, que no están en su directorio de inicio, también tendrán el primer elemento al principio, mientras que bashsolo imprime puntos en ese caso. Entonces
/this/…/some/silly/path
en lugar de
.../some/silly/path
Pero esto podría no ser necesariamente algo malo.
PROMPTvariable de entorno en su .zprofile, por ejemplo:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrcy realmente no hay necesidad de exportningún parámetro interno de shell como PROMPT.
Además de las otras respuestas dadas aquí, también puede usar %<para truncar la ruta a un número dado de caracteres . Considero que es preferible usarlo %<n>d, ya que los elementos de ruta individuales obviamente pueden ser bastante largos en sí mismos. El uso %<produce una longitud máxima de aviso mucho más predecible.
Por ejemplo, para truncar a la izquierda el elemento de ruta con tilde expansion ( %~) a 15 caracteres, reemplazando los caracteres eliminados por .., puede hacer algo como esto:
PROMPT='%n@%m:%15<..<%~%<<%# '
Esto está documentado en el manual de Zsh en Expansión rápida , justo al final de la página.
Puede usar %3d la expansión rápida :
/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $
La forma general es %d, si cualquier entero positivo siguiente despecifica los componentes finales para mostrar la ruta actual, cero significa mostrar la ruta completa, entero negativo significa la ruta principal para mostrar:
.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $
Ver http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html oman 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 ‘~’.
Entonces, para obtener algo similar PROMPT_DIRTRIM=3, podría usar %3do %3~, por ejemplo,
% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d%
~/a/bcomo en.../a/blugar de~/a/b. Para arreglar eso, puedes usar%(5~|…/%3~|%~).