Como visualizar e editar arquivos de valores separados por delimitadores grandes?

14

Eu tenho usado csv-modepara modificar arquivos CSV de pequeno a médio porte, mas recentemente tenho trabalhado com arquivos grandes que contêm mais de 40.812 entradas. csv-modeluta para alinhar e navegar nas tabelas e é muito lento para ser utilizável como está. Em comparação, o LibreOffice Calc pode percorrer o arquivo.

Existe uma maneira simples de csv-modelidar com tabelas grandes ou existe uma abordagem melhor disponível?

Estou ciente de uma pergunta relacionada ao Stack Overflow . Sua solução foi alinhar apenas a parte do buffer na janela visível, mas isso não resolveu a lentidão no meu caso.

Aqui está um arquivo de exemplo. Tentei torná-lo grande, mas não tão grande que irá congelar o Emacs em computadores mais antigos.

holocronweaver
fonte
3
A edição de tabelas não é uma das forças atuais do Emacs. Eu queria que fosse. Prefiro nunca precisar usar uma planilha dedicada.
Wdkrnls
2
Não é uma resposta de curto prazo, mas você pode querer M-x report-emacs-bug, idealmente com uma receita para reproduzir a desaceleração. Provavelmente há muito espaço para melhorias csv-mode.
Stefan
3
Você tem um arquivo de amostra que demonstra o problema?
Wilfred Hughes
Sim Sim eu faço. Adicionado à pergunta.
precisa

Respostas:

12

Com csv-modeposso ver algumas defasagens no seu arquivo, mas apenas com o destaque da sintaxe ativado. Depois de desativar a fontificação, M-x font-lock-modeele funciona sem problemas.

Para desativá-lo permanentemente para csv-modeadicionar à sua configuração:

(add-hook 'csv-mode-hook (lambda () (font-lock-mode -1))

Ou se você é um usuário de pacote de uso:

(use-package csv-mode
  :mode ("\\.csv\\'" . csv-mode)
  :init (add-hook 'csv-mode-hook (lambda () (font-lock-mode -1)))
  :ensure t)
kmicu
fonte
2
Depois de desativar font-lock-mode, company-modee alguns outros modos menores, a velocidade melhorou consideravelmente! Considero isso um grande sucesso.
holocronweaver
5
Eu consideraria mesmo envolvendo este aplicar somente a arquivos grandes:(when (> (point-max) some-large-number) (font-lock-mode -1))
Sean Allred