Site Overlay

aliquote

Este post trata de Emacs e (Neo)vim, mas o título é apenas uma piada, é claro: Eu uso ambos os editores, embora a maior parte do meu trabalho de programação seja feito no Emacs. Eu passei as últimas semanas usando Emacs, Safari e iTerm2 (principalmente para coisas ssh) apenas. Comecei a usar o Vim para me familiarizar mais com a edição modal (apesar do que eu ainda penso) e mapeamentos relevantes. Como os padrões do Doom são em sua maioria centrados no Mal, achei que esta seria uma boa oportunidade para aprender mais sobre os modos visual e normal. O Vim oferece uma experiência muito melhor num Terminal, comparado com o Emacs rodando em modo não-Gui, e ainda é mais rápido over ssh, IMO.

Quando estou editando texto no Emacs, agora eu vim apreciar alguns idiomas como % para mover de um delimitador (parênteses ou colchetes) para o outro, * e # para procurar para frente e para trás, g; (goto-last-change) para voltar para onde estávamos antes de mover, gg para ir ao topo do ficheiro, ou ) e ] para avançar rapidamente (ao contrário de w e b para palavras), não obstante algumas configurações específicas do Doom como gr (eval-region) ou gd e gD (+lookup/definition e +lookup/references, que fazem uso das capacidades de backend LSP quando disponíveis). Também aprendi a usar algumas combinações de verbo+moção, como ciw ou diw, 5j, etc. Eu ainda estou muito familiarizado com shift-select e o uso das teclas de seta para usar o movimento visual adequado em alguns casos, mas tudo bem. Da mesma forma, C-a e C-e ainda estão muito entranhados na minha memória muscular para pensar em alternativas Vimesque como 0 e $, especialmente porque eu os uso no meu Terminal e outros macOS app.

Essa é a vantagem do Doom Emacs afinal de contas: podemos usar ambos os keymappings a qualquer momento. Se você se perguntar, eu também uso keybindings padrão do MacOS como ⌘-R (pesquisar e substituir) e ⌘-F (apenas pesquisa avançada, usando rg ou swiper). Acho que isto é o que uso a maior parte do tempo, por isso não é grande coisa para a minha pobre memória. Sei que podemos fazer muito mais, em qualquer um dos editores, mas normalmente não preciso desses superpoderes extras. Por exemplo, enquanto substituir a palavra sob o cursor por um yanked pode ser bem feito em Vim (o mesmo se aplica ao Emacs), eu prefiro consultar e substituir, especialmente se isso tiver que ser feito várias vezes. Talvez eu mude de idéia mais tarde ou quando eu me tornar mais fluente com o yanking no Vim. Para mim, os comandos mais úteis para yanking e colagem no Vim permanecem yy, dd e p, claro, e só comecei a apreciar a seleção em modo visual usando V, S-V ou C-V.

Agora vem a questão do esquema de cores, já que sempre defendi a idéia de que temas simples e leves são muitas vezes melhores. Alguns bons temas são descritos no site do Jason Blevins, e eu tentei muitos temas sem cor ou minimalistas no passado. Eu realmente não gosto de rosa ou roxo, então Atom ou VS Code esquemas coloridos padrão, e variações Emacs deles, não são uma opção. No final, o buffer parece apenas um arco-íris. Eu uso o maravilhoso tema Nord (escuro) tanto no Vim como no Emacs, assim como no iTerm. Na minha opinião, ele fica melhor no Vim do que na implementação correspondente do Emacs em modo não-GUI, mas como eu geralmente uso o Emacs em uma GUI eu não me importo muito. No entanto, eu fiz algumas modificações no esquema de cores base. A idéia era ter um esquema de cores mais claro, depois de remover a colorização estranha para rostos que não são tão essenciais quando se escreve prosa ou código. Você pode dar uma olhada abaixo:

A idéia é simplesmente remover o destaque da sintaxe para tudo, exceto palavras-chave e formas específicas de linguagem relacionadas, que usam a mesma cor base, e destacar as cadeias de caracteres de forma diferente (com uma variante com dimmer para números):

A idéia de usar uma variante inclinada para funções é na verdade apenas um teste. Funciona muito bem para dialetos parecidos com Lisp e Python, embora.

Fiz mais customizações para “text-mode” (Markdown e Org), o que equivale a usar essencialmente cabeçalhos brancos (nível 1 e 2), destaque com dimmer para código inline e URLs, etc. Afinal, quando você está escrevendo em prosa, você não quer necessariamente ver cores a cada 3 ou 4 palavras. O fato de minha lista TODO ou documentos Org estarem apenas cheios de cores estava me deixando louco em algum momento. Metadados e gavetas Org também estão usando cores escurecidas. Finalmente, seleções e saltos também são realçados usando diferentes cores de fundo.

Bem, é tudo. Volto a experimentar com movimentos Vim e talvez os meus próximos posts sejam todos sobre Neovim.

♪ Nick Cave & The Bad Seeds – Ghosteen

Deixe uma resposta

O seu endereço de email não será publicado.