Как определить функцию в Vim? - PullRequest
1 голос
/ 18 января 2010

Если курсор находится где-то в очень длинной функции, есть ли способ, чтобы Vim сообщал пользователю, какую функцию он / она редактирует?

Кстати, я использую taglist, но кажется, что taglist не обновляет автоматически то, где вы находитесь, даже если вы переместили курсор на другую функцию.

Ответы [ 2 ]

5 голосов
/ 18 января 2010

Плагин taglist предоставляет эту функцию. Функция, в которой курсор в данный момент позиционируется автоматически подсвечивается в списке функции taglist.

Убедитесь, что Tlist_Auto_Highlight_Tag не равно 0, чтобы включить эту функцию.

updatetime определяет время отсутствия активности, которое должно пройти до taglist выделяет текущую функцию. По умолчанию 4 секунды.

:help taglist.txt See section "Highlighting the current tag"

В качестве быстрого теста: Тип: TlistHighlightTag, чтобы заставить taglist выделить текущую функцию. Если это работает, я полагаю, что вы отключили автоматическое выделение в любом путь (см. Tlist_Auto_Highlight_Tag).

2 голосов
/ 19 января 2010

В дополнение к ответу Хаби, если вы хотите сделать это без использования taglist, вы можете довольно легко определить функцию, которая сработает. Это зависит от того, на каком языке вы программируете, но для языков, подобных C, вы можете сделать это:

nmap ,f call ShowFuncName()
" Show the name of the current function (designed for C/C++, Perl, Java etc)
fun! ShowFuncName() 
    let lnum = line(".")
    let col = col(".") 
    echohl ModeMsg 
    echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW')) 
    echohl None 
    call search("\\%" . lnum . "l" . "\\%" . col . "c") 
endfun 

Поместите это в ваш vimrc и затем нажмите , f , чтобы увидеть текущую функцию.

Взято с здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...