2015-12-13 4 views
3

Я привык работать с gvim, но я хочу использовать преимущества vim + tmux. Поэтому я хочу перейти на vim. Но в vim стиль курсора не изменяется в зависимости от того, в каком режиме я есть, полезная функция gvim. Я использую zsh (oh-my-zsh) и ниже гном-терминала.Как изменить стиль курсора в vim в зависимости от того, находится ли я в режиме вставки или в обычном режиме?

Я попробовал этот ответ: http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes

if has("autocmd") 
    au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" 
    au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block" 
au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" 
endif 

но изменяет курсор globaly. Определенно, что-то я не хочу

следующий Я пробовал этот плагин: http://www.vim.org/scripts/script.php?script_id=4403, но он не сработал ни один.

+0

Похоже, что это подойдет моим потребностям, но оно тоже не работает. Вы можете себе представить, почему? – Jonas

+0

Кажется, я совершенно неправильно читаю сообщение. Я удалил свой ответ. –

+0

Возможный дубликат [Как изменить курсор vim в режиме Вставки/Обычный?] (Http: // stackoverflow.com/questions/6488683/how-do-i-change-the-vim-cursor-in-insert-normal-mode) –

ответ

0

Для цветов, что и я использую:

let &t_SI = "\<Esc>]12;yellow\x7" 
let &t_SR = "\<Esc>]12;red\x7" 
let &t_EI = "\<Esc>]12;blue\x7" 

Другие варианты:

" solid underscore 
" let &t_SI .= "\<Esc>[4 q" 

" solid block 
" let &t_EI .= "\<Esc>[1 q" 
    " 1 or 0 -> blinking block 
    " 3 -> blinking underscore 
    " Recent versions of xterm (282 or above) also support 
    " 5 -> blinking vertical bar 
    " 6 -> solid vertical bar 

Эти Termcap коды см справку Termcap-курсора-цвет. Сами же коды - console_codes (4). Таким образом, это взаимодействие с самим терминалом, а не с сеансом vim.

Я, к сожалению, не решил проблему с выходом Vim и возвратом исходного цвета курсора. Я пробовал следующее и многие его варианты:

au VimLeave * let &t_EI = "\<Esc>]12;white\x7" 
au VimLeavePre * :!echo -ne "\033]12;white\000" 
au VimLeavePre * let &t_SI = "\<Esc>]12;white\x7" 

но безуспешно. Во всяком случае, так можно изменить форму и цвет курсора по отношению к режиму редактирования.

Для более общих изменений (например, изменения ColorScheme) при смене режима, я использую

au InsertEnter * call ColoursBasedOnMode(v:insertmode) 
au InsertLeave * call ColoursBasedOnMode('n') 
autocmd BufWinEnter,BufNew * call ColoursBasedOnMode('n') 

, в котором у меня есть:

: 
    : 
elseif a:mode == 'i' 
    "echo " ColoursBasedOnMode insert mode" 
    "set nonumber 
    "set norelativenumber 

    colorscheme railscasts 
     : 
     : 
+0

Спасибо, но где именно вы разместили код? в .vimrc? – Jonas

+0

Да, да, в моем .vimrc –

0

Установите клеммные параметры только для этого эмулятора терминала , Как указано здесь: https://stackoverflow.com/a/25327689/2544873.

let &t_SI = "\<Esc>]12;orange\x7" 
let &t_EI = "\<Esc>]12;red\x7" 
autocmd VimLeave * silent !echo -ne "\033]112\007" 
  1. Установка терминала курсор в режим вставки
  2. Установите терминал курсора на режим отпуска вставки
  3. Сброс по умолчанию (серый) цвет на отпуск Vim
0

Вероятно, wincent/terminus ВИМ плагин что вам нужно:

В режиме вставки форма курсора изменяется на тонкую вертикальную полосу. В режиме замены он изменяется на подчеркивание. При возврате в нормальный режим он возвращается к стандартной «блочной» форме. Для выбора между различными формами предусмотрены параметры конфигурации.