Я пришел к мысли, что <C-a>
в обычном режиме Vim должен не только увеличивать числа, но и переключать логические значения. Это имеет смысл, если вы считаете true
и false
целыми числами по модулю 2.
Итак, я скачал отличный скрипт , чтобы сделать волосатую работу и написал новое определение для <C-a>
:
fun! NewCA()
let cw = tolower(expand("<cword>"))
if cw == "true" || cw == "false"
ToggleWord
else
" run the built-in <C-a>
execute "normal \<C-a>"
endif
endfun
command! NewCA :call NewCA()
nnoremap <C-a> :NewCA<cr>
Но как это происходит, nnoremap
не идет так далеко, чтобы проверять внутренние функции. Я получаю рекурсивное поведение , если мой курсор не на словах true
или false
.
В этом пункте я клянусь, почему Брэм не выбрал отличную идею от Emacs, что все должно быть функциями и привязками клавиш, которые можно свободно настраивать. Тогда я мог бы просто проверить функцию на <C-a>
и вызвать ее в этой функции. Но нет, я не могу найти такую функцию, и фразы execute "normal foo"
, похоже, идиома Vim.
Любые предложения о том, как можно заставить <C-a>
работать так, чтобы
- Переключить логическое значение, когда курсор находится над словом
true
или false
- Возврат к встроенному
<C-a>
поведению в противном случае
Помощь оценена!