Есть ли способ иметь переменную состояния в VIM? Рассматривать:
" Relative line numbers in Normal mode, absolute in Insert mode. Ctrl-N to toggle
set relativenumber
autocmd InsertEnter * :set number
autocmd InsertLeave * :set relativenumber
inoremap <C-n> <C-o>:call NumberToggle()<cr>
nnoremap <C-n> :call NumberToggle()<cr>
function! NumberToggle()
if(useRelNums != 1)
let useRelNums=1
set number
else
let useRelNums=0
set relativenumber
endif
endfunc
Конечно, useRelNums
не определено. Я хотел бы сохранить эту переменную определенной между вызовами NumberToogle()
функции, т.е. переменная состояния. Как это сделать? Я уверен, что я мог бы использовать некоторые другие переменные VIM в качестве обходного пути (например, состояние paste
для плохого примера), но я бы предпочел реальное решение.
Благодарю.
setlocal ...
действительно. Э-э ... Я копировал стиль автора с переменной областью действия ... да ... это то, что я делал ... да ... Но справка vim утверждает, что число / относительное число в любом случае локально для окна. не повредит, хотя, безусловно, помогает передать намерение, что они являются окнами PER / буфер / thingamabob.relativenumber
не поможет, так как состояние сбрасывается при входе / выходе из режима вставки. Вот почему я пытаюсь сделать что-то более сложное.