Я заключаю, что самой большой проблемой являются регистры ЦП и стек. Одной из вещей, которые необходимо сделать во время GC, является пересечение все указатели в системе, что означает знать, каковы те указатели. Если один из тех указателей находится в настоящее время в регистре ЦП затем, необходимо пересечь это также. Так же, если у Вас есть указатель на стеке. Таким образом, каждый стековый фрейм должен иметь своего рода карту, говорящую, что является указателем и что не, и прежде чем Вы сделаете любой GC, пересекающий Вас, должен вывести любые указатели в память.
Вы также сталкиваетесь с проблемами с закрытиями и продолжениями, потому что внезапно Ваш стек прекращает быть простой структурой LIFO.
очевидный путь никогда не состоит в том, чтобы содержать указатели на стеке CPU или в регистрах. Вместо этого у Вас есть каждый стековый фрейм как объект, указывающий на его предшественника. Но это уничтожает производительность.
This autocommand will do what you want:
:autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Edit: I have used the IncSearch
highlight group in my example, but you can find other colours to use by running this command:
:so $VIMRUNTIME/syntax/hitest.vim
Если вы установите
:set hlsearch
для выделения всех вхождений шаблона поиска, а затем используйте *
или #
, чтобы найти вхождения слова под курсором, это приведет вас к тому, что вы хотите. Однако я думаю, что подсветка переменных с учетом синтаксиса выходит за рамки VIM.