Spacemacs: Atalhos, Configuração e Integrações

Atalhos de Navegação e Edição

Spacemacs combina funcionalidades do Vim e Emacs, oferecendo uma vasta gama de atalhos. A tabela a seguir apresenta comandos para manipulação de linhas e dobras.

Atalho Comando Descrição
zt evil-scroll-line-to-top Posiciona a linha do cursor no topo da tela
zz evil-scroll-line-to-center Centraliza a linha do cursor na tela
zb evil-scroll-line-to-bottom Posiciona a linha do cursor na base da tela
za evil-toggle-fold Alterna o estado de uma dobra
zc evil-close-fold Recolhe a dobra atual
zo evil-open-fold Expande a dobra atual
zm evil-close-folds Recolhe todas as dobras
zr evil-open-folds Expande todas as dobras

Navegação por Código e Projeto

Para navegação semântica, utilize os prefixos de líder (geralmente SPC ou ,). Abaixo estão atalhos comuns para análise de código e gerenciamento de projetos.

Atalho Comando Funcionalidade
,gd xref-find-definitions Vai para a definição do símbolo sob o curser
,gb xref-pop-marker-stack Retorna à posição anterior após um salto
,gr xref-find-references Encontra todas as referências ao símbolo
SPC p f projectile-find-file Busca e abre um arquivo dentro do projeto atual
SPC p p projectile-switch-project Alterna entre projetos conhecidos

Configuração do Spacemacs

O arquivo de configuração principal é ~/.spacemacs. Sua estrutura é baseada em funções Elisp que são executadas em uma ordem específica durante a inicialização.

  1. dotspacemacs/init: Configura variáveis globais como temas, fontes e estilos de numeração de linha.
  2. dotspacemacs/user-init: Personalização inicial, como a definição de espelhos (mirrors) para download de pacotes.
  3. dotspacemacs/layers: Especifica os módulos (layers) a serem carregados e suas variáveis de configuração.
  4. dotspacemacs/user-config: Configurações avançadas do usuário, como hooks e modificações de comportamento.

Exemplo de configuração de um layer para desenvolvimento em Python:

(python :variables
        python-backend 'lsp
        python-lsp-server 'pyright
        python-formatter 'yapf)

Integração com EditorConfig

O EditorConfig garante formatação de código consistente entre diferentes editores. Para ativá-lo no Spacemacs:

  • Instale o pacote do sistema (ex: brew install editorconfig no macOS).
  • Adicione editorconfig à variável dotspacemacs-additional-packages em seu .spacemacs.
  • Crie um arquivo .editorconfig na raiz do projeto com as regras desejadas.
  • Ative o modo na configuração do usuário: ``` (add-hook 'after-init-hook #'editorconfig-mode)
    
    

Gerenciamento de Código com Git (Magit)

Spacemacs integra o poderoso interface Magit para Git. O prefixo padrão é SPC g.

Ação Atalho (Spacemacs 0.2xx+) Observação
Iniciar repositório SPC g i
Ver status SPC g s A partir desta tela, use atalhos como 's' para stage, 'u' para unstage, etc.
Fazer commit SPC g s, depois 'c c' No buffer de commit, finalize com C-c C-c
Fazer push SPC g P Siga as instruções no minibuffer
Ver log SPC g l l

Customização Avançada e Hooks

Para atribuir um modo principal a uma extensão de arquivo, modifique a variável auto-mode-alist. Exemplo para arquivos .jsx:

(add-to-list 'auto-mode-alist '("\\.jsx\\'" . rjsx-mode))

Hooks permitem executar código quando um modo é ativado. Um hook personalizado para js2-mode pode ser definido assim:

(defun meu-hook-js2 ()
  (setq js2-basic-offset 2)
  (setq js2-strict-missing-semi-warning nil)
  (setq js2-include-node-externs t))
(add-hook 'js2-mode-hook 'meu-hook-js2)

Servidor Emacs e Controle de Processos

Spacemacs inicia um servidor por padrão. Você pode interagir com ele via linha de comando usando emacsclient.

  • emacsclient -c: Abre uma nova janela gráfica.
  • emacsclient -t: Abre um cliente no terminal.
  • Para encerrar o servidor, utilize SPC q q dentro do Spacemacs ou execute emacsclient -e '(kill-server)' no terminal.

A configuração dotspacemacs-persistent-server no arquivo .spacemacs controla se o servider deve permanecer ativo após fechar a interface principal.

Exemplo de Instalação de Backends

Para utilizar features como Language Server Protocol (LSP), são necessárias dependências externas. Exemplos para camadas comuns:

# Para LSP em HTML/CSS
npm install -g vscode-langservers-extracted

# Para LSP em JavaScript/TypeScript com TypeScript Server
npm install -g typescript typescript-language-server

# Para LSP em Python com Pyright
npm install -g pyright

# Para formatação com web-beautify (camada html/javascript)
npm install -g js-beautify

Tags: Spacemacs Emacs EditorConfig Magit Git

Publicado em 5-31 19:03 por Thomas