Как изменить курсор с тонкой линии на блок в соответствии с обычным или вставным режимом в Console Vim на терминале Gnome

Я перехожу от Gvim к использованию Console Vim с помощью Gnome Terminal 2.32.1.

Мне очень понравилось в Gvim, как курсор будет сплошным квадратом, когда в обычном режиме и тонкой линии, когда вставляется mode.

  • Есть ли способ создать эту функцию при запуске консоли Vim на терминале Gnome?
  • Если это невозможно, какие трюки существуют для того, чтобы узнать, какой режим вы используете находятся в? Я знаю, что в нижней части экрана отображается режим, но, похоже, он не так полезен, как курсор (именно там мои глаза смотрят). Или вы просто привыкаете к нему с практикой?
6
задан 13 October 2011 в 12:10

3 ответа

Для gnome-terminal добавьте это в свой ~/.vimrc (будет создан, если отсутствует):

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

Найдено здесь: Измените форму курсора в разных режимах .

EDIT

Измените последнее ibeam на block, чтобы оставить курсор блока.

8
ответ дан 6 August 2018 в 03:38

Нет необходимости использовать автокоманды или gconftool для этого - Vim теперь поддерживает его изначально.

Вставьте следующие строки в ваш vimrc:

let &t_SI = "\<esc>[5 q"  " blinking I-beam in insert mode
let &t_SR = "\<esc>[3 q"  " blinking underline in replace mode
let &t_EI = "\<esc>[ q"  " default cursor (usually blinking block) otherwise

Эти последовательности должны работать в все эмуляторы терминала VTE с версии VTE версии 0.39, выпущенные в конце 2014 года, а также в xterm. Если вы хотите остановить мигание курсора, добавьте по одному к каждому из чисел и вставьте 2 в последовательность для t_EI (возможные последовательности перечислены в этом ответе , см. также руководство VT510 ).

0
ответ дан 6 August 2018 в 03:38

Для версии терминала gnome> 3.15 Добавьте это к своему ~ / .vimrc.

if has("autocmd")
  au VimEnter,InsertLeave * silent execute '!echo -ne "\e[2 q"' | redraw!
  au InsertEnter,InsertChange *
\ if v:insertmode == 'i' | 
\   silent execute '!echo -ne "\e[6 q"' | redraw! |
\ elseif v:insertmode == 'r' |
\   silent execute '!echo -ne "\e[4 q"' | redraw! |
\ endif
au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif

Вы получите курсор в нормальном режиме и тонкий в режиме вставки.

1
ответ дан 6 August 2018 в 03:38

Другие вопросы по тегам:

Похожие вопросы: