O que significa% F e como posso pará-lo?

3

Em um rxvt-clone (estou usando rxvt-unicode , mas parece acontecer também em plain, old rxvt ), a seqüência de caracteres %F parece ter algum tipo de significado especial (assim como alguns outros, como %S ). Em particular, recebo o seguinte:

% date +%F          
38;5;0m2011-04-02
% date +%F--%H.%M.%S
38;5;0m--.Hostname.2011-04-02--22.25.59

com o texto após o m estar em alguma cor escura quase preta. Devido ao meu esquema de cores (texto malva em um fundo de bolinhas azul escuro), isso é quase ilegível.

O que é isso e, mais importante, como faço para parar?

Para mostrar por que isso é particularmente irritante, meus documentos de aula têm a data como parte de seu nome. Portanto, é muito conveniente escrever:

xelatex lecture.beamer.$(date +%F).tex

desde que eu posso armazenar isso no meu histórico e recuperá-lo com alguns TABs judiciosos. No entanto, a saída resultante é todo o inverso de um tom mais branco, tornando difícil ver se há um erro.

Caso isso faça diferença, meu shell é zsh .

    
por Loop Space 02.04.2011 / 22:33

1 resposta

5

Em um de seus comentários, você mencionou o uso de zsh com uma função preexec que chama print -P $2 .

Em zsh , print -P aceita estes caracteres de formato:

  • %F significa definir a cor do primeiro plano
  • %S significa definir o atributo de destaque

Veja a expansão de prompt do zsh para obter a lista completa.

Portanto, é provavelmente melhor remover o sinal -P da sua chamada para print in preexec .

Uma maneira de obter o mesmo efeito:

settitle() {
    printf "%b%s%b" "3]0;" "$1" "
settitle() {
    printf "%b%s%b" "3]0;" "$1" "%pre%7"
}

tildedir() {
    print -Pn "%~" 
}

preexec() {
    settitle "$(tildedir):$2"
}
7" } tildedir() { print -Pn "%~" } preexec() { settitle "$(tildedir):$2" }
    
por 03.04.2011 / 00:39

Tags