Exibindo guias como caracteres


119

Quando trabalho em arquivos em python, às vezes confundo abas por espaços e vice-versa. Existe uma maneira de conseguir que o Vim exiba um caractere para uma guia em vez de uma guia?


Apenas como uma observação lateral, você pode configurar para converter todas as guias em espaços retabsempre que salvar o arquivo.
0xc0de 15/03

Se você instalou o vim-faq , poderá obter uma resposta offline lá: :h vim-faqe pesquisar /invisible. A tag difícil de memorizar é :h faq-19.8.
Hotschke

Respostas:


119

Sim, use listchars:

set list
set listchars=tab:>-

Se você colocar essas duas linhas em seu .vimrc, as guias serão mostradas como >na posição inicial e -no restante da guia.

(Sidenote: listchars também pode mostrar espaços à direita com trail:x(substitua xpelo caractere que você deseja usar para um espaço à direita), o que também pode ser útil.)


6
Nota: Eu gosto de usar set listchars=tab:!·,trail:·, o IMHO ·é muito mais claro do que um -... Você precisa de uma versão bastante recente do Vim para que isso funcione (não tenho certeza qual exatamente, acho que 7.3.x) ...
Martin Tournoij

8
Eu gosto de usar o caractere unicode , pois é um pouco menor que >. Atualmente, vejo espaços em branco marcando o eol (embora eu possa tentar o acima). Minhas configurações são: set listchars=eol:¬,tab:▸\ e
Martin York

58

A resposta básica é :set list, o que faz com que as guias sejam exibidas como ^I.

No entanto, eu recomendo ir além disso. Just :set listé problemático, pois falha em preservar o alinhamento visual na tela. Por exemplo:

%.o: %.cpp
^Ig++ -c $<

não parece bom, especialmente quando você espera que o gdos g++que aparecem sob o primeiro pde cpp(supondo tabstop=8).

Portanto, sugiro que .vimrcvocê coloque algo como :set listchars=tab:␉· (Para ser claro, esse é o caractere Unicode U + 2409 SÍMBOLO PARA TABULAÇÃO HORIZONTAL seguido de U + 00B7 MIDDLE DOT .)

Conforme explicado em :help listchars, uma configuração de dois caracteres para tab:xypreservar o alinhamento visual:

tab:xy        Two characters to be used to show a tab.  The first
              char is used once.  The second char is repeated to
              fill the space that the tab normally occupies.
              "tab:>-" will show a tab that takes four spaces as
              ">---".  When omitted, a tab is show as ^I.

O exemplo acima apareceria na tela como:

%.o: %.cpp
␉·······g++ -c $<

Pessoalmente, eu concordo com o meu listchars:

:set listchars=eol:⏎,tab:␉·,trail:␠,nbsp:⎵

Esses caracteres são distintos o suficiente para que raramente apareçam literalmente no texto do documento.

Para digitar esses caracteres especiais no seu vimrc, digite Ctrl-vu23CEenquanto estiver no Modo Inserir, conforme explicado em :help utf-8-typing.


2
Veja tambémset lcs=tab:├─
sch

isso só me deu uma? em eol
WendyG

14

Guias de destaque

TabDestaque temporário

Para uso ocasional, pode-se simplesmente destacar todas as guias em um documento usando o seguinte /comando de pesquisa :

/\t

Para remover o realce, basta digitar o :nohque significa abreviação :nohlsearch- sem iluminação alta.

TabDestaque permanente

" Highlight tabs as errors.
" https://vi.stackexchange.com/a/9353/3168
match Error /\t/

Guia destacando no vim

Mais destaque

Para obter mais desses comandos úteis de destaque - incluindo combinados com espaços em branco à direita e tornando isso permanente - consulte o wiki do Vim .


4
Você também pode usar :match Error /\t/para destacar guias (ou qualquer outro padrão) independentemente do registro de pesquisa e hlsearch (digite :matchpara limpá-lo).
Martin Tournoij 25/08/16

11
@Carpetsmoker Pode-se encontrar muito mais desses comandos úteis de destaque (incluindo combinados com espaços em branco à direita!) No wiki do Vim sobre como destacar espaços indesejados .
Serge Stroobandt

9

Pessoalmente, gosto do uso do plugin indentLine , que exibe uma linha vertical nos níveis de indentação.

É de grande ajuda, especialmente em python, onde o recuo é importante.

(Imagem retirada do link acima)

Entre outras coisas, fornece um comando de alternância, que pode ser mapeado para uma combinação de teclas, para que você possa desativá-lo quando não precisar.


2
Eu acredito que este plugin é destinado a espaços recuando embora?
Jake Byman

5

Você pode mostrar abas de maneira diferente em um terminal comum e no gvim.

set list!
if has('gui_running')
    set listchars=tab:▶\ ,trail:·,extends:\#,nbsp:.
else
    set listchars=tab:>.,trail:.,extends:\#,nbsp:.
endif

(Adicionando a integridade, caso outros achem útil).


4

O método mais fácil é o de fazer :set list, que mostrará as guias como ^Ie o fim da linha como $.

Eu gosto de usar um mapeamento que chama

:set invlist 

para alternar entre exibição regular e exibição de lista.

Por exemplo:

:nmap <leader>l :set invlist<cr>

Isso me permite verificar rapidamente se há problemas de tabulação versus espaço e voltar a uma exibição regular.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.