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
Me gusta más la primera versión, pero tenga en cuenta que se muestra ~/a/bcomo en .../a/blugar de ~/a/b. Para arreglar eso, puedes usar %(5~|…/%3~|%~).
momar
Para aquellos nuevos en zsh (como yo), desea utilizar esta sintaxis con la PROMPTvariable de entorno en su .zprofile, por ejemplo:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
Ryan H.
1
@RyanH. Gracias, al leer mi respuesta nuevamente, me doy cuenta de que nunca mencioné dónde deben realizarse estos ajustes. Tendré que arreglar eso. Dos pequeñas cosas sobre su comentario: la configuración para las sesiones de shell interactivas debe realizarse .zshrcy realmente no hay necesidad de exportningún parámetro interno de shell como PROMPT.
Adaephon
@Adaephon Gracias por la información. Lo arreglaré! :)
Ryan H.
8
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.
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:
%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,
~/a/b
como en.../a/b
lugar de~/a/b
. Para arreglar eso, puedes usar%(5~|…/%3~|%~)
.PROMPT
variable de entorno en su.zprofile
, por ejemplo:EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
.zshrc
y realmente no hay necesidad deexport
ningún parámetro interno de shell comoPROMPT
.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:Esto está documentado en el manual de Zsh en Expansión rápida , justo al final de la página.
fuente
Puede usar
%3d
la expansión rápida :La forma general es
%d
, si cualquier entero positivo siguiented
especifica los componentes finales para mostrar la ruta actual, cero significa mostrar la ruta completa, entero negativo significa la ruta principal para mostrar:fuente
Ver http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html o
man zshmisc
Entonces, para obtener algo similar
PROMPT_DIRTRIM=3
, podría usar%3d
o%3~
, por ejemplo,fuente