Я обычно использую cscope
просмотреть мой код. Всякий раз, когда я ударил C ]
текущий буфер, который я читаю, изменяется, и отображается файл, содержащий определение.
Предположим, у меня уже есть вкладка в vim с уже открытым этим файлом: есть ли способ перейти из моего текущего местоположения прямо в тот файл, который уже открыт?
Мне не нужно разбивать, а просто перейти к файлу, который уже открыт в буфере.
Вы можете приблизиться к тому, что вы хотите с комбинацией опций:
" use the quickfix list/window for all cscope queries
set cscopequickfix=s-,g-,c-,d-,i-,t-,e-
" quickfix commands jump to the target buffer where it is displayed
set switchbuf=useopen,usetab
и переназначение:
" override the default <C-]> behaviour
nnoremap <C-]> :cs f g <C-R><C-w><CR>
Для обычных тегов есть <C-W>]
картирование и :stag
команда, которая разбивает окно перед переходом тега.
Для cscope есть :cstag
, но нет :scstag
так что вам придется делать отдельные команды, например:
:split | cstag ...
Вы, вероятно, можете изменить / добавить C ]
картирование, которое вы имеете таким образом.
В идеале это будет учитывать 'switchbuf'
и повторно использовать существующее окно, показывающее этот целевой буфер, вместо того, чтобы делать разделение. К сожалению, Vim current ведет себя не так, и реализовать это самостоятельно сложно, в основном потому, что вам нужно каким-то образом получить целевой файл перед переходом, чтобы проверить доступность буфера через bufwinnr()
,