Acabei de instalar o Ctags (para ajudar no desenvolvimento do C ++) com o meu Vim (ou melhor, com o gVim) e gostaria de descobrir seus comandos, macros, atalhos, dicas favoritos que o acompanham ...
Compartilhe seu melhor arsenal. Quais outros complementos do Vim você recomendaria para C ++ no desenvolvimento do Vim?
EDIT Qual outro complemento você usaria em conjunto com Ctags?
EDIT2 Qual versão do gVim você usa com tags? Isso faz diferença?
EDIT3 Como você aprimora sua experiência de programação para projetos grandes e pequenos?
vim
ctags
vim-macros
kenorb
fonte
fonte
closed as not constructive
há quase dois anos, é tão construtivo para mimRespostas:
Ctrl+ ]- vá para a definição
Ctrl+ T- Volte da definição.
Ctrl+ W Ctrl+ ]- Abra a definição em uma divisão horizontal
Adicione essas linhas no vimrc
map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>
Ctrl+ \- Abra a definição em uma nova guia
Alt+ ]- Abra a definição em uma divisão vertical
Depois que as tags são geradas. Você pode usar as seguintes teclas para marcar e excluir funções:
Ctrl+
Left MouseClick
- Ir para a definiçãoCtrl+
Right MouseClick
- Voltar para a definiçãofonte
Ctrl-w C-]
você pode fazerC-w T
(também conhecido como Shift-t) para mudar essa divisão para uma nova guia.g C-]
é muito útil. Abre uma caixa de diálogo rápida para selecionar uma entre várias definições.g]
também é útil. Você pode posicionar o cursor sobre o nome da marca e pressionarg]
para obter uma lista de marcas correspondentes.Uma linha que sempre aparece no meu .vimrc:
Isso procurará no diretório atual "tags" e trabalhará a árvore em direção à raiz até que uma seja encontrada. IOW, você pode estar em qualquer lugar na sua árvore de origem, e não apenas na raiz dela.
fonte
cscope
?Outro plugin útil para o desenvolvimento de C é o cscope Assim como o Ctags permite ir para as definições, o Cscope pula para as funções de chamada .
Se você possui o cscope em seu diretório ~ / bin /, adicione o seguinte ao seu .vimrc e use g ^] para acessar a função de chamada (consulte: help cscope).
Quase esqueci ... Assim como ctags - você precisa gerar (e atualizar periodicamente) o banco de dados. Eu uso o seguinte script
Onde 'select_files' é outro script que extrai a lista de arquivos C e de cabeçalho do Makefile. Dessa forma, indexo apenas os arquivos realmente usados pelo projeto.
fonte
Você pode adicionar diretórios à sua pesquisa ctags. Por exemplo, eu tenho um índice ctags criado para o Qt4 e tenho isso no meu .vimrc:
fonte
Todos os itens acima e ...
code_complete: parâmetro de função concluído, trechos de código e muito mais.
taglist.vim: navegador de código-fonte (suporta C / C ++, java, perl, python, tcl, sql, php, etc)
fonte
Uso ALT-esquerda e ALT-direita para abrir / enviar de / para a pilha de tags.
Se você usar
hjkl
para o movimento você pode mapear<M-h>
e<M-l>
em vez disso.fonte
Várias definições com o mesmo nome
<C-w>g<C-]>
abra a definição em uma divisão, mas também faça o:tjump
que vai para a definição ou, se houver várias definições, apresenta uma lista de definições para você escolher.fonte
:ptag
comando que abre a definição em uma janela de visualização.:h CursorHold-example
qual exibe a tag do item sob o cursor na janela de visualização após um tempo limite configurável.:help
às vezes é impressionante ... ver:help CTRL-W_g}
e:ptjump
O comando que estou usando mais é C-], que salta para a definição da função sob o cursor. Você pode usá-lo com mais frequência para acompanhar mais chamadas. Depois disso, Co trará de volta um nível, Ci se aprofundará novamente.
fonte
Encontrei o plug-in de lista de tags obrigatório. Ele lista todas as tags que conhece (arquivos que você abriu) em uma janela separada e facilita a navegação por arquivos maiores.
Eu o uso principalmente para desenvolvimento em Python, mas só pode ser melhor para C / C ++.
fonte
Encapsulei a manipulação de tags em um plugin experimental meu.
Com relação ao desenvolvimento de C ++ no vim, eu já respondi lá : eu uso meu próprio conjunto e alguns outros plugins.
fonte
Estou adaptando meus plugins vim há dois anos para dar suporte a projetos c ++ suficientemente grandes. Você pode dar uma olhada neles.
Eles usam ctags e cscsope.
http://www.vim.org/scripts/script.php?script_id=1638
http://www.vim.org/scripts/script.php?script_id=2507
fonte
Coloquei o seguinte no meu arquivo .gvimrc, que procura na árvore a partir de qualquer ponto um arquivo de tags quando o gvim é iniciado:
Em seguida, regenero periodicamente um arquivo de tags na parte superior da minha árvore de origem com um script parecido com:
fonte
Eu uso o vim no macos, e as ctags originais não funcionam bem, então faço o download do mais novo e configurei o make make install. Eu instalo o ctgas em / usr / local / bin / ctags (para manter o original)
fonte
Adaptei a função de pesquisa SetTags () acima (que deve ser substituída pelo equivalente
set tags+=./tags;/
) para trabalhar no cscope. Parece funcionar!fonte
Outra iteração na função SetCscope () acima. Isso define o pré-caminho do cscope para obter correspondências sem estar no diretório em que "cscope.out" é:
fonte