O csv.vim - Um plug-in de tipo de arquivo para arquivos csv também suporta arquivos delimitados por tabulação e tem :ArrangeColumn
e :UnArrangeColumn
comandos para isso.
Eu tenho uma necessidade freqüente de manipular manualmente o texto delimitado por tabulações para entrada de dados e outras finalidades. Quando faço isso, ajuda se o texto estiver alinhado corretamente nas colunas. Por exemplo (assumindo guias de 4 espaços):
# original format
abcdefghijklmnop field2
abcdefgh field2
abcdefghijkl field2
# ideal format
abcdefghijklmnop field2
abcdefgh field2
abcdefghijkl field2
Estou muito familiarizado com o uso do utilitário column
para colocar o texto em coluna dessa maneira, mas o problema é que ele usa espaços para alinhar as colunas e eu preciso especificamente de guias. Esse requisito também parece excluir o plug-in Tabularize.
Existe alguma maneira de eu poder colocar em coluna texto com abas especificamente, dentro de vim
ou no shell? Parece que eu poderia fazer isso com groff
/ tbl
, mas honestamente eu prefiro colocar em colunas à mão do que mexer com isso ...
O csv.vim - Um plug-in de tipo de arquivo para arquivos csv também suporta arquivos delimitados por tabulação e tem :ArrangeColumn
e :UnArrangeColumn
comandos para isso.
Defina o tamanho de exibição da guia como maior que seu campo mais longo.
# original format
abcdefghijklmnop<Tab>field2
abcdefgh<Tab>field2
abcdefghijkl<Tab>field2
I have spaces!<Tab>field2
No Vim,
:echo len("abcdefghijklmnop") " Reports 16
:set noexpandtab tabstop=17
Você provavelmente pode condensar isso em um comando, mas não sei como. Se você estiver executando um Vim moderno, :set list
indicará hard tabs com um caractere sofisticado (que você também pode configurar). Caso contrário, eles serão exibidos como ^I
(não o que você deseja) ou espaço em branco.
# displays like this
abcdefghijklmnop>field2
abcdefgh> field2
abcdefghijkl> field2
I have spaces!> field2
Quando você tiver espaço adequadamente alinhado à tabela (com o Tabularize mencionado ou o plug-in alternativo Alinhar ), você poderá converter os espaços em guias com os seguintes comandos :
:%retab!
:%substitute/ \+/\t/g
O primeiro comando substitui o recuo por tabulações sempre que possível sem alterar as larguras (isso pressupõe que você tenha :set noexpandtab
), o segundo então transforma os espaços que sobraram para as tabulações (maiores).
Usando o plug-in godlygeek / tabular , você pode selecionar
:%Tabularize /\t.*/
As colunas separadas por tabulações só funcionam quando o programa usado para exibi-las é capaz de expandir / reduzir caracteres de tabulação para honrar seu significado real. Vim, e acredito que a maioria dos outros editores de texto simples, é incapaz de usar guias para tabulação porque as guias têm uma única largura fixa. O Vim pode usar uma mistura de abas e espaços para obter um resultado similar, mas o que você ganha obviamente não é mais separado por abas.
Você precisaria converter todas essas misturas de tabulação / espaços em guias únicas em cada gravação.
Em suma, um editor de texto simples provavelmente não é a ferramenta certa para o trabalho.
Tags vim shell text-editors