класс и имена функций, выделяющиеся в Vim

DoCmd.NavigateTo "acNavigationCategoryModifiedDate"
DoCmd.NavigateTo "acNavigationCategoryObjectType"
DoCmd.RunCommand acCmdWindowHide

Чтобы команда DoCmd.RunCommand acCmdWindowHide успешно закрыла панель навигации, панель навигации должна иметь фокус. Но чтобы окно доступа имело фокус, элемент управления внутри окна должен иметь фокус. Оказывается, команда NavigateTo никогда не поместит фокус в текстовое поле Поиск, поэтому, если результаты поиска пустые и нечего выбирать, то фокус не изменится на панель навигации (даже хотя технически выбранная группа панели навигации могла быть обновлена.)

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

(Действительно, использование команды NavigateTo в этом случае - просто глупый трюк, чтобы сосредоточиться на панели навигации. Это просто еще один вопиющий недостаток интерфейса доступа - отсутствие прямых команд / объектов для управления панелью навигации .)

68
задан Glorfindel 10 March 2019 в 14:00
поделиться

6 ответов

Интересно, что подсветки синтаксиса в VIM не поддерживают применение синтаксиса к идентификаторам или именам функций - по крайней мере, не подсветка синтаксиса для C и C ++. Таким образом, даже если вы сделаете:

:hi Function guifg=red

или

:hi Identifier guifg=red

, это не придаст этому цвету. Мне кажется, что это не что иное, как ключевые слова и константы для этих языков.

Здесь кто-то начал расширять файл синтаксиса cpp для поддержки имен методов. Я полагаю, это начало. http://vim.wikia.com/wiki/Highlighting_of_method_names_in_the_definition

17
ответ дан thomasrutter 24 November 2019 в 14:04
поделиться

Используйте плагин для vim, например Taglist , или настройте ctags ] или cscope интеграция с vim ( здесь руководство для vim / cscope.)

2
ответ дан dirkgently 24 November 2019 в 14:04
поделиться

Единственное решение - использовать встроенную базу данных ctags. Поэтому создайте его с помощью утилиты ctags . Затем установите переменную 'tags' и поместите следующее в

~/.vim/after/syntax/c.vim

function! s:highlight()
    let list = taglist('.*')

    for item in list
        let kind = item.kind

        if kind == 'f' || kind == 'c'
            let name = item.name
            exec 'syntax keyword Identifier '.name
        endif
    endfor
endfunction

call s:highlight()

. Я должен предупредить вас, что это может работать очень медленно в очень большой базе данных ctags.

Также есть одно решение в vim .org, но я не пробовал это. Дайте мне знать, если это работает для вас.

10
ответ дан 24 November 2019 в 14:04
поделиться

У меня была такая же проблема, когда я начал использовать vim. Решение простое, вам просто нужно отредактировать файл синтаксиса c, используемый vim, вот как это сделать:

Когда вы начинаете редактировать файл C или C ++, vim читает файл синтаксиса c по умолчанию, расположенный в

$VIMRUNTIME/syntax/c.vim

( Где $ VIMRUNTIME - это то место, где вы установили vim. Вы можете узнать его значение по умолчанию, открыв vim и используя команду ": echo $ VIMRUNTIME").

Вы можете просто перезаписать этот файл или создать свой собственный синтаксис C файл (который будет загружен vim вместо файла по умолчанию) в этом месте:

$HOME/.vim/syntax/c.vim      (for UNIX)
$HOME/vimfiles/syntax/c.vim  (for PC or OS/2)

(я никогда не использовал Mac, поэтому я не знаю, какой из них будет работать для вас. Вы можете узнать больше в справке vim, ": помогите vimfiles ")

Теперь самое интересное. Скопируйте значение по умолчанию «$ VIMRUNTIME / syntax / c.vim» syn match cCustomParen "(" содержит = cParen, cCppParen syn match cCustomFunc "\ w \ + \ s * (" содержит = cCustomParen syn match cCustomScope "::" син совпадение cCustomClass "\ w \ + \ s * ::" содержит = cCustomScope привет def ссылка cCustomFunc функция Привет def ссылка cCustomClass Функция

Вот и все! Теперь имена функций и классов будут выделены цветом, определенным в выделении «Function» («: hi Function»). Если вы хотите настроить цвета, вы можете изменить последние две строки выше на что-то вроде этого:

hi def cCustomFunc  gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00

или вы можете оставить файл синтаксиса C в покое и определить цвета в вашем файле vimrc (": help vimrc"):

hi cCustomFunc  gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00

(Обратите внимание на отсутствие ключевого слова def, перейдите к «: help highlight-default» для подробной информации). Доступные параметры для команды ": hi" см. ": Help: highlight".

Вы можете найти полный файл c.vim для Vim 7.2 по этой ссылке (Примечание: используйте его, только если у вас есть неизмененные Vim, версия 7.2):

http://pastebin.com/f33aeab77

И обязательный скриншот:

enter image description here

121
ответ дан 24 November 2019 в 14:04
поделиться

Сергей, изменение первой строки с

syn match    cCustomParen    "(" contains=cParen,cCppParen

на

syn match    cCustomParen    "(" contains=cParen contains=cCppParen

, похоже, исправило это для меня.

3
ответ дан 24 November 2019 в 14:04
поделиться

Попробуйте использовать этот плагин http://www.vim.org/scripts/script.php?script_id=2646 Он делает все ctags выделяются очень эффективно для вас

2
ответ дан 24 November 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: