Переход TextMate к функции в VIM? - PullRequest
4 голосов
/ 24 октября 2009

Недавно я попробовал свои силы в использовании vim вместо TextMate, и одна из функций, которые мне больше всего не хватало в VIM - это функция перехода к методу TextMate (CMD + Shift + T для тех, кто не знает) , Посмотрев вокруг, я не увидел какого-либо конкретного способа эмулировать эту функциональность и подумал, есть ли у кого-нибудь здесь опыт работы с подобной функциональностью в VIM.

Заранее спасибо за любые ответы

Patrick

Ответы [ 8 ]

4 голосов
/ 24 октября 2009

Вы ищете функциональность тегов vim ... Я ответил на похожий вопрос о тегах здесь: Как реализовать собственный переход тега в VIM с помощью CTRL -]?

2 голосов
/ 18 февраля 2011

Эта функциональность была реализована в fuzzyfinder с использованием: FufBufferTag. Смотри билет

0 голосов
/ 16 ноября 2012

Функция, описанная в этом вопросе, имеет много разных имен в зависимости от IDE / редактора:

  • В Resharper это называется "Перейти к элементу файла"
  • В Sublime Text 2 это называется "Goto Symbol"
  • В PyCharm это называется "Goto Symbol"

Эта функция, по сути, одинакова, хотя и во всех вышеперечисленных реализациях (и я предполагаю, что она очень похожа и в TextMate). Эта функция выводит интерактивный список методов / функций (и, возможно, также включает переменные / свойства-члены).

Список позволяет интерактивную фильтрацию, введя имя метода / функции / и т. Д. Список также обычно позволяет использовать клавиши со стрелками для выбора метода / функции / и т. Д. Нажатие клавиши ввода с выбранным методом / функцией / и т. Д. Позволяет перейти к строке в текущем файле, где определен выбранный метод / функция / и т. Д.

Из всех существующих ответов на этот вопрос я вижу только один, который, по-видимому, обеспечивает достаточно похожую реализацию этой функции, - это использовать команду:

:FufBufferTag 

в vim's Плагин FuzzyFinder .

Ответ, который предлагает использовать плагин taglist, не является хорошим решением, потому что функциональность, предлагаемая плагином taglist, сильно отличается от этой функции. Плагин taglist предлагает аналогичную функциональность - возможность просмотра схемы методов в текущем файле, но он не предлагает интерактивного способа фильтрации этого списка в реальном времени. Плагин taglist позволяет выполнять поиск в буфере тегов, но это не так удобно, как функция «Перейти к символу», предлагаемая в других редакторах.

Я хотел бы предложить альтернативное предложение, которое заключается в использовании команды:

:CtrlPBufTag 

в отличном Ctrlp плагине vim. На мой взгляд, это лучшая реализация функции Goto Symbol, доступной в настоящее время в vim.

0 голосов
/ 09 октября 2011

Я написал команду TextMate Bundle (например, вы можете легко назначить ее для Ctrl +] ), которая ищет определение класса или метода под кареткой и отображает его во всплывающей подсказке вместе с с именем файла и строкой, в которой он был найден.

Проверьте это: Добавьте ярлык в TextMate для поиска определения класса или метода во всплывающей подсказке
Надеюсь, вы найдете это полезным!

0 голосов
/ 05 августа 2010

Я использую CommandT для поиска файлов, затем / для поиска определенной функции. Однако настоящая проблема связана с CSS. Cmd Shift T в Textmate позволяет быстро переходить к определенному классу CSS, и это значительно экономит время.

CTags не поддерживает синтаксический анализ CSS, если только вы не перекомпилируете патч (найденный через google), но я даже не уверен, что мы можем сделать нечеткий поиск классов CSS, как в Textmate. Я действительно скучаю по функции Cmd Shift T.

0 голосов
/ 25 октября 2009

У меня была почти такая же проблема, и я нашел быстрое и грязное решение (вставьте это в свой .vimrc и позвоните, набрав: LS) ​​

function! s:ListFunctions()
vimgrep /function/j %
copen
endfunction
command! -bar -narg=0 LS call s:ListFunctions()

Если вам требуется больше функциональности, то Exuberant Ctags вам лучше подойдет

0 голосов
/ 25 октября 2009

вы можете создать файл тегов с помощью ctags http://ctags.sourceforge.net/ в основном $ ctags -R Затем, когда вы находитесь в vim: установите tags = / path / to / tagsfile

это также будет любой тег, а не только имена классов, методов и т. Д. В обычном режиме ctrl-] на методе / классе / и он перейдет на эту позицию.

Вы также можете использовать плагин taglist, который будет отображать текущие теги в боковом окне. Ctags

0 голосов
/ 24 октября 2009

Я хотел бы услышать хорошие предложения, поскольку я использую Vim все время, но не использовал TextMate. Я делаю следующие вещи, которые слегка перекрывают друг друга.

  1. Поиск d-e-f-space- <первые несколько букв названия функции>. Поэтому, чтобы перейти к функции foo (в Python или Ruby и, конечно же, в одном и том же файле), я набираю /def fo и я там. У меня также включен инкрементальный поиск в Vim.

  2. Используйте отметки для функций, которые я часто посещаю. Поэтому я ma определю функцию, а затем 'a вернусь к ней позже. Я знаю, что это не определения функций, но это костыль.

...