Defina o comprimento da tabulação em cmd.exe

6

Por padrão, os caracteres da guia em cmd são gravados com 8 caracteres. Existe alguma maneira que eu possa mudar isso para algo menor?

Usamos guias para recuo em nosso código. Assim, a saída do diff do Mercurial (ou seja, hg diff ) torna-se bastante horrível de se ler.

    
por Gieron 16.05.2012 / 10:31

4 respostas

3

Com um arquivo em lotes, você pode usar a substituição de seqüência de caracteres linha por linha para substituir as guias por quatro espaços:

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=* delims=" %%a in ('hg diff') do (
    set __temp=%%a
    echo !__temp:   =    !
)

endlocal

O EnableDelayedExpansion permitiu o uso de ! s e a modificação de variáveis dentro do loop for .

Parece que inserir código nessa resposta substituiu a guia por três espaços. Quando você copia isso para um arquivo de lote, verifique se há um caractere de tabulação real entre : e = na linha echo .

Se você tiver aspas simples no comando que precisa executar (na verdade, não sei a sintaxe completa de hg diff ), será necessário delimitá-las com backquotes e ativar usebackq . O que significa que você não pode usar backquotes no comando que precisa executar. Escolha um.

Versão com backquoted:

@echo off

setlocal EnableDelayedExpansion

for /f "usebackq tokens=* delims=" %%a in ('hg diff') do (
    set __temp=%%a
    echo !__temp:   =    !
)

endlocal
    
por 16.05.2012 / 10:57
1

Não tenho certeza de onde esses 8 caracteres estão vindo para você, mas sempre tive 4 caracteres ao digitar qualquer arquivo de texto em cmd.exe usando TYPE ou COPY, pode ser que a saída tenha duas guias . De acordo com o DOS tradicional, a largura de um TAB é de 4 caracteres, existem MUITAS ferramentas de linha de comando que dependem disso, que é a razão mais provável que não há como alterá-lo até onde eu saiba (se houve ele estaria em algum lugar no registro, mas nunca o vi), a menos que você descompile / recompile cmd.exe. Minha sugestão é escrever um script ou uma ferramenta de console que imprima a saída para a tela do console para você, interpretando as guias da maneira que quiser ou encontrando uma ferramenta como essa já feita em algum lugar.

    
por 16.05.2012 / 16:58
1

Não tenho ideia de como você pode fazer o que quiser, mas você pode:

  1. altera o tamanho das larguras do buffer e da janela para aumentar o espaço total da linha;
  2. redirecione a saída para um arquivo, depois leia o arquivo com um editor de texto como o Notepad ++.

    c: \ > hg diff > arquivo.txt

por 16.05.2012 / 10:46
0

Esta não é uma solução geral, mas desde que você perguntou sobre o 'hg diff', e aconteceu de aparecer na minha consulta do Google ..:)

Portanto, a maneira como resolvi o problema da guia para esse caso específico foi usar less.exe. Eu já estava usando isso, na verdade, mas só precisava de um parâmetro extra. Aqui está um pouco do meu hgrc (simplificado):

[extensions]
pager =

[pager]
attend = annotate, cat, diff, export, glog, help, log, status
pager = path\to\less.exe --quit-if-one-screen --raw-control-chars --tabs=4
hg16mode = yes
    
por 03.12.2014 / 14:50