2015-02-12 2 views
3

Я использую vim с заглушкой для гаджета, чтобы читать код через несколько файлов. Все в порядке, за исключением того, что я не знаю, как вернуться к предыдущей позиции до запуска: CtagsCursor для перехода к определению токена. Я читал глобальные онлайн-документы GNU, но не нашел ничего полезного. Но в главе «3.4 Элвис, использующей GLOBAL», он говорит: «CTRL-T возвращается к самому последнему тегу контекста». Это именно то, что я хочу. Не знаю, почему функция не реализована для vim, или что-то не так со мной?Может ли гамаг вернуться назад?

BR, Ruochen

+0

Хм, 'ctrl-t' должен работать. Попробуйте 'ctrl-o' и посмотрите, ведет ли он себя так, как вы хотите. – Th30n

ответ

1

<C-t> является встроенной командой, связанной с "стек тегов" Vim в.

Похоже, что плагин вы используете не реализуют аналогичную функцию (и не взаимодействует с стеком тегов в любом случае), так что вы остались с <C-o>/<C-i> прыгать вокруг списка переходов.

+1

Если вы хотите, вы можете создать файл тегов через 'global', например. 'global -t. >./tags'. Это позволит вам использовать функции cmag vim, но используя «gtags» для создания базы данных. Вы также можете использовать set '' cscopeprg'' для 'gtags-cscope', чтобы вы могли получить функциональность cscope, но я не уверен, что это позволяет использовать' '. –

0

Я просмотрел документы и кажется, что стек тегов не поддерживается gnu-global в vim в соответствии с разделом 3.5.1. Особенности: http://www.gnu.org/software/global/globaldoc_toc.html#Features_0028Vim_0029

В приведенном выше описании есть ссылка на настройку плагина, который использует стек тегов, поэтому проверьте это.

Кроме того, использование ctrl-o и ctrl-i в качестве заменителей должно работать нормально.

1

Я решил проблему, используя gtags-cscope как cscopeprog. Кроме того, я активировал cscopetag для использования cscope для поиска ctag в vim. Таким образом, если вы нажмете <C-]>, вы ищите декларацию в gtags и <C-t>, чтобы вернуться назад.

Для поиска ссылок, которые я сопоставил с <C-\>, я использую окно quickfix. Это не использует стек тегов, а <C-t> не будет работать.

Я попробовал это, используя стек тегов, но это приводит к загроможденному стеку тегов и большому окну выбора. Если вы найдете несколько ссылок, вы должны нажать <C-t> несколько раз, поэтому я решил использовать вместо этого метод fastfix.

Вот моя фактическая конфигурация.

set cscopeprg=gtags-cscope 
if has('cscope') 
    set cscopetag cscopeverbose 
    if has('quickfix') 
    set cscopequickfix=s-,c-,d-,i-,t-,e- 
    endif 

    map <C-\> :cs find c <C-R>=expand("<cword>")<CR><CR> 
endif 

Если вы хотите дать ссылку поиск без QuickFix попытку, удалите опцию c- в cscopequickfix.

Еще один совет, cscopeverbose - возможность распечатывать сообщения об ошибках при использовании cscope. В противном случае вы не получите ошибок (например, файл с добавленными гаджетами или символ не найден).

EDIT 1:

Чтобы загрузить файл GTAGS, используйте встроенную команду cs add ./GTAGS.

+0

Это хорошо. Единственное, чего не хватает, это загрузить базу данных cscope. Было бы неплохо, если бы мы могли использовать синтаксис, например, vim уже поддерживает теги 'set tags =./Tags;'. – seanahern

+0

@seanahern Вместо установки 'tags' вы можете использовать команду' cs add./GTAGS' для использования встроенной команды. – evotion

+0

Um, справа, но 'cs add' не ищет иерархию путей, например, vim встроила в свою команду« set tags ». Я имею в виду возможность поиска определенного файла (в данном случае «GTAGS») в текущем каталоге, а затем каждую последующую родительскую директорию до тех пор, пока файл не будет найден. – seanahern

1

GNU GLOBAL имеет два портативных плагина vim gtags.vim и gtags-cscope.vim.

В комментарии к заголовку gtags-cscope.vim говорится, что он используется для интеграции GLOBAL с интерфейсом Vim cscope.

Так что вы должны сделать, это:

  1. Установка VIM плагинов (Они находятся в tarball)
    • cp /path/to/global-source/*.vim ~/plugin/
  2. Добавить некоторые параметры в ~/.vimrc

Заголовок комментарий gtags-cscope.vim имеет все доступные варианты. В моем случае я использую следующее:

" To use the default key/mouse mapping: 
let GtagsCscope_Auto_Map = 1 
" If you hope auto loading: 
let GtagsCscope_Auto_Load = 1 
" Don't show warning if GTAGS not found 
let GtagsCscope_Quiet = 1 
" To use 'vim -t ', ':tag' and '<C-]>' 
set cscopetag 

 Смежные вопросы

  • Нет связанных вопросов^_^