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:
- " funciona en mi máquina " ©
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 ...