Подтвердить что ты не робот

Vim: Открыть тег в новой вкладке

Есть ли плагин или script, чтобы открыть записи ctags на новой вкладке? Я хотел бы навести курсор на функцию, нажать ctrl +] и открыть запись на другой вкладке. Мне также хотелось бы, если бы я визуально выделил запись, чтобы ctrl +] продолжал работать и открывался на новой вкладке vim.

4b9b3361

Ответ 1

Вы можете

C-w C-] C-w T

Чтобы достичь этого эффекта

Затем вы также можете отобразить следующее:

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

Изменить: также, в зависимости от того, что вы действительно хотите, не забывайте, что вы можете открывать теги в предварительном просмотре (:ptag), например. C-w }. Просто упомянуть об этом в случае...

Ответ 2

Вот два довольно ad-hoc-отображения (в случае, если ваши теги генерируются ctags):

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

Сначала мы открываем текущий буфер на новой вкладке; то мы пытаемся перейти к тегу под курсором (g<C-]>, который равен :tjump, перескакивает непосредственно в тег, если имеется только одно совпадение, или содержит список совпадений, если их много).

Плюсы:

Минусы:

  • Если вы выйдете из списка совпадений, не выбирая их, вновь созданная вкладка останется открытой.
  • то же самое происходит, если совпадений нет вообще

P.S. Не могли бы вы предоставить пример использования для отображения визуального режима?

P.P.S. Если вы создаете теги с cscope (что лучше, чем ctags) и используйте vim сопоставления, замените приведенные выше сопоставления следующими словами:

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

Ответ 3

Если кто-то все еще ищет решение. В этом решении, когда не найден тэг, больше не останется пустой вкладки.

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

Ответ 4

Вы можете установить сочетание клавиш, 'g', а затем CONTROL-], в ~/.vimrc следующим образом:

nmap g<C-]> :execute 'tab tag '.expand('<cword>')<CR>

nmap       means 'when in normal mode'
g<C-j>     is the shortcut, 'g' followed by CTRL-]
execute    is a means of executing a command passed as a string
tab tag    means "open a new tab and run 'ta'"
expand     is used to expansion of a vim item
<cword>    means a word the same as used for '*'. See also <cWORD>

Вы можете проверить "tab ta" через: имя тега tab