#vim #neovim
#vim #neovim
Вопрос:
У меня есть небольшая функция для подчеркивания каждого слова, такого как слово под моим курсором:
function! HighlightWordUnderCursor()
hi MatchWord NONE
let disabled_ft = ["qf", "fugitive", "nerdtree", "gundo", "diff", "fzf", "floaterm"]
if amp;diff || amp;buftype == "terminal" || index(disabled_ft, amp;filetype) >= 0
return
endif
if getline(".")[col(".")-1] !~# '[[:punct:][:blank:]]'
hi MatchWord cterm=undercurl gui=undercurl guibg=#3b404a
exec 'match' 'MatchWord' '/V<'.expand('<cword>').'>/'
else
match none
endif
endfunction
augroup MatchWord
autocmd!
autocmd! CursorHold,CursorHoldI * call HighlightWordUnderCursor()
augroup END
Однако, когда он находится в режиме diff, он по-прежнему совпадает, но он черный на желтой измененной строке. Как я могу это исправить? Спасибо.
Стоит отметить: в строках без различий выделение происходит не так, как ожидалось.
Комментарии:
1. почему у вас есть функция для этого в любом случае? почему бы просто не использовать
*
?2. @DoktorOSwaldo Я хотел бы отказаться от вашего комментария.
3. Мне жаль, что вы так себя чувствуете. Однако я не пытаюсь запугать вас, я серьезно спрашиваю. Я совершенно уверен, что вы знаете о такой возможности. Вот почему мне интересно, какова (вероятно, действительная) причина этого…
4. @DoktorOSwaldo посмотрите на autocmd. Я копирую поведение vscode, помечая символ под курсором, а не ища его, я не хочу загрязнять свой
@/
регистр, это очень полезно, чтобы увидеть похожие ключевые слова в вашем коде.5. Спасибо. Ваша проверка
amp;diff
на самом деле выглядит правильно. Вы пробовали добавлять точку останова, чтобы увидеть, действительно ли она пропускаетif
блок?breakadd func HighlightWordUnderCursor