plugin para manager vim vim-plugin

para - vim: etiqueta abierta en una nueva pestaña



vim plugins 2018 (3)

¿Hay un complemento o script para abrir las entradas de ctags en una nueva pestaña? Me gustaría colocar mi cursor sobre una función, presionar ctrl +] y tener la entrada abierta en otra pestaña. También me gustaría si selecciono visualmente una entrada, para que ctrl +] aún funcione y se abra en una nueva pestaña de vim.


Aquí hay dos bonitas asignaciones ad hoc (en caso de que las etiquetas sean generadas por ctags ):

nnoremap <C-]> :tabnew %<CR>g<C-]> vnoremap <C-]> <Esc>:tabnew %<CR>gvg<C-]>

Primero abrimos el búfer actual en una nueva pestaña; luego intentamos saltar a una etiqueta debajo del cursor ( g<C-]> , que es igual a :tjump , salta a la etiqueta directamente si solo hay una coincidencia, o proporciona una lista de coincidencias si hay muchas).

Pros:

Contras:

  • Si sale de la lista de coincidencias sin elegir ninguna, la pestaña recién creada permanecerá abierta
  • Lo mismo sucede si no hay partidos en absoluto

PS ¿Podría proporcionar un caso de uso para la asignación de modo visual?

PPS Si genera etiquetas con cscope (que es mejor que ctags ) y usa sus asignaciones vim , reemplace las asignaciones anteriores con las siguientes:

nnoremap <C-]> :tabnew %<CR><C-]> vnoremap <C-]> <Esc>tabnew %<CR>gv<C-]>


En caso de que alguien todavía esté buscando una solución. En esta solución, cuando no se encuentra ninguna etiqueta, no se dejará más pestañas en blanco.

function! w:GoToTag(tagWord) let l:tagfile = &tags :tabe execute ''set tags='' . l:tagfile execute '':silent tjump '' . a:tagWord let l:tagFilename = expand(''%:t'') if l:tagFilename == '''' :tabclose :tabprevious endif endfunction


Usted puede

Cw C-] Cw T

Para lograr ese efecto

Entonces también puedes mapear eso:

:nnoremap <silent><Leader><C-]> <C-w><C-]><C-w>T

Edición: también, dependiendo de lo que realmente desee, no olvide que puede abrir etiquetas en la vista previa ( :ptag ) con, por ejemplo, Cw } . Solo mencionándolo por si acaso ...