LINUX.ORG.RU

vim где ошибка в функции

 


0

2
function! ChangeLayout999(flag)
    if &iminsert == 1 || a:flag == 1
        hi StatusLine   ctermfg=230  ctermbg=238  cterm=NONE guifg=#ffffd7 guibg=#444444 gui=NONE
        set iminsert=0
    else
        hi StatusLine   ctermfg=230  ctermbg=232  cterm=NONE guifg=#ffffd7 guibg=#080808 gui=NONE
        set iminsert=1
    endif
endfun
imap <silent> <C-^> <C-\><C-o>:call ChangeLayout999(1)<CR>
nmap <silent> <C-^> <C-\><C-o>:call ChangeLayout999(1)<CR>
inoremap <silent> <ESC> <Esc>:call ChangeLayout999(0)<CR>
inoremap <silent> <C-c> <Esc>:call ChangeLayout999(0)<CR>
★★★★

Последнее исправление: bryak (всего исправлений: 1)

а что оно должно делать, и что оно делает?

f1u77y ★★★★
()

Ошибок в функции нет. Ты не можешь реализовать нужную тебе логику что ли? Но я бы заменил map на noremap и <Esc> с <C-c> на :autocmd InsertLeave.

salsa
()
Ответ на: комментарий от salsa

да дело в том, что ошибок в функции нет, но проблема в том, что она не работает.

bryak ★★★★
() автор топика
Ответ на: комментарий от bryak

Всмысле i_<C-c> игнорирует InsertLeave? Ну да, не вспомнил :)

function ChangeLayout1000(flag)
  if &iminsert || a:flag
    highlight StatusLine ctermfg=230 ctermbg=238 cterm=NONE guifg=#ffffd7 guibg=#444444 gui=NONE
    set iminsert=0
  else
    highlight StatusLine ctermfg=230 ctermbg=232 cterm=NONE guifg=#ffffd7 guibg=#080808 gui=NONE
    set iminsert=1
  endif
endfunction

inoremap <silent> <C-^> <C-\><C-o>:call ChangeLayout1000(0)<CR>
nnoremap <silent> <C-^> :<C-u>call ChangeLayout1000(0)<CR>
inoremap <silent> <Esc> <Esc>:call ChangeLayout1000(1)<CR>

salsa
()
Ответ на: комментарий от salsa

Спасибо. Сколько раз себя ловлю на мысли, что надо бы почитать vimL, но как бы это банально не звучало - нет на это времени:)

bryak ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.