vim: открыть тег в новой вкладке - PullRequest
48 голосов
/ 20 мая 2011

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

Ответы [ 4 ]

83 голосов
/ 20 мая 2011

Вы можете

Cw C -] Cw T

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

Тогда вы также можете отобразить, что:

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

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

5 голосов
/ 29 июля 2011

Вот два довольно специальных отображения (на случай, если ваши теги сгенерированы с помощью ctags):

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

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

Плюсы:

Минусы:

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

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

PPS Если вы генерируете теги с cscope (что лучше, чем ctags) и используете его vim mappings , замените вышеуказанные отображения на следующиеединицы:

nnoremap <C-]> :tabnew %<CR><C-]>
vnoremap <C-]> <Esc>tabnew %<CR>gv<C-]>
2 голосов
/ 10 января 2014

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

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
1 голос
/ 19 июня 2019

Вы можете установить сочетание клавиш, '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 имя функции

...