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.
dotspacemacs/init: Configura variáveis globais como temas, fontes e estilos de numeração de linha.dotspacemacs/user-init: Personalização inicial, como a definição de espelhos (mirrors) para download de pacotes.dotspacemacs/layers: Especifica os módulos (layers) a serem carregados e suas variáveis de configuração.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 editorconfigno macOS). - Adicione
editorconfigà variáveldotspacemacs-additional-packagesem seu.spacemacs. - Crie um arquivo
.editorconfigna 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 qdentro do Spacemacs ou executeemacsclient -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