Como substituir o comando '='?

7

Não consigo convencer o vim a aplicar o estilo de codificação que eu gostaria ( cindente amigos).

No entanto, a integração clang-format.py(que usa o formato .clang do meu projeto) realmente me deixa totalmente feliz.

Só que eu tenho o reflexo de usar o comando =+ motion . O que é realmente muito bom recuar uma região ou o arquivo inteiro.

Como posso instruir o vim a substituir a funcionalidade padrão? Eu li sobre equalprg, mas não tenho certeza de como configurá-lo para fazê-lo funcionar no formato clang.

Patrick B.
fonte
4
Que tal instalar o vim-clang-formatplug-in do Rhysd , junto com seus requisitos (especialmente vim-operator-user), e depois mapear =para <Plug>(operator-clang-format)? Link do plug-in: github.com/rhysd/vim-clang-format
VanLaser
Obrigado @VanLaser Você também sabe como fazê-lo funcionar com o movimento: ==para uma linha e gg=Gpara todo o buffer?
Patrick B.
@ VanLaser, desculpe pela minha relutância - simplesmente não estava acreditando: seu comentário funciona como esperado. Faça uma resposta, por favor.
Patrick B.

Respostas:

8

Se você não tem nada contra a instalação de um plug-in, o formato vim-clang do Rhysd pode ser uma solução válida, em vez de personalizada equalprg.

Como a documentação indica, com a dependência do operador vim-usuário do Kana instalada, você pode mapear =para <Plug>(operator-clang-format)(para funcionar como um operador completo) e usá-lo com movimentos / objetos de texto como ==ou =G.

Você deve criar um mapeamento local do buffer , apenas para os tipos de arquivos C, C ++ e Objective-C, para permitir que o padrão =seja intocado:

autocmd FileType c,cpp,objc map <buffer> = <Plug>(operator-clang-format)
VanLaser
fonte