Primeiro, não estou perguntando sobre desempenho. Estou procurando por algo que me ajude, mentalmente, a entrar em grandes arquivos de código fonte em C aos quais não estou acostumado. Tome por exemplo readelf.c
. Este arquivo tem 20.000 linhas. Eu posso ler o código e entendê-lo, mas prefiro que não. Isso é apenas um problema na minha experiência com C. Por alguma razão, em C, o tamanho do arquivo é absurdamente grande e readelf.c
não está sozinho nisso. Existe alguma coisa que possa virtualizar um arquivo C em algo sã como um projeto estruturado - eu sei que isso é pedir muito, mas parece que, com todo o código C existente, alguém teria feito algo assim.
O terminal do meu laptop pode conter ~ 50 linhas. Quais ferramentas e plugins o vim oferece para ajudar a navegar por arquivos com mais de 10k mas menos de 100k linhas?
fonte
Respostas:
Eu acho que o que você está procurando é um plugin como a barra de tags , que pode criar uma barra lateral para exibir todas as funções, estrutura / classe, macros etc. Também permite clicar (ou pressionar Enter) na tag e, em seguida, pular para a definição.
fonte
Você pode ativar a dobragem de código usando a opção vim:
set foldmethod=syntax
Isso reduz a quantidade de código que você vê de uma vez e o torna gerenciável. Depois de ativar a dobra de código, use os comandos abaixo para abrir e fechar dobras: Os comandos zc (fechar), zo (abrir) e za (alternar) operam em um nível de dobra, no cursor. Os comandos zC, zO e zA são semelhantes, mas operam em todos os níveis de dobra (por exemplo, a linha do cursor pode estar em uma dobra aberta, que fica dentro de outra dobra aberta; digitar zC fecha todas as dobras no cursor).O comando zr reduz a dobra ao abrir mais um nível de dobras em todo o buffer (a posição do cursor não é relevante). Use zR para abrir todas as dobras.
fonte
Algo que estou fazendo está usando
Você pode encontrar toda a minha configuração @ aqui
fonte
Além de plugins baseados em ctags, como o Taglist, eu uso o cscope . Alguns plugins podem ser úteis: como cscope_macros e CCTree . Antes de usar ctags ou cscope, você precisa criar um arquivo de tags e um banco de dados cscope, veja os links acima. Embora essas ferramentas sejam bastante antigas, elas funcionam muito bem com muitas implementações modernas de C.
Também não se esqueça de marcas que você pode definir em lugares importantes, dobrando partes indesejadas,
gD
,*
,]]
e movimentos semelhantes. Se você não quiser usar nenhum programa ou plug-in externo, poderá obter uma prévia do arquivo destafoldmethod
define dobrar com base na sintaxe C (você pode escrevê-lo em .vimrc) e ozM
comando (no modo normal) dobra tudo para o nível máximo.Para mais informações, veja:
fonte
O Tagbar pode ajudar a navegar por um grande número de funções em um único arquivo. Entre outros recursos, ele suporta a classificação por nome ou número de linha, o que acho muito útil.
marks
também pode ser uma grande ajuda na navegação para frente e para trás em um arquivo grande. Consulte:h marks
ou http://vimdoc.sourceforge.net/htmldoc/motion.html#mark para obter mais detalhes.Se você perceber a necessidade de saltar constantemente entre vários arquivos (grandes), o Gtags poderá ajudá-lo a encontrar definições / referências em todo o projeto.
fonte