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

Я переключаюсь с Gvim на использование Console Vim с использованием терминала Gnome 2.32.1.

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

  • Есть ли способ создания этой функциональности при запуске консоли Vim в терминале Gnome?

  • Если это невозможно, какие уловки можно узнать режим ты в? Я знаю, что есть режим, отображаемый в нижней части экрана, но он не так полезен, как курсор (на который смотрят мои глаза). Или ты просто привыкаешь к этому с практикой?

6
задан 13 October 2011 в 11:10

3 ответа

Для терминала гнома добавьте это к Вашему ~/.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

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

Править

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

8
ответ дан 13 October 2011 в 11:10

Для версии терминала 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

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

0
ответ дан 13 October 2011 в 11:10

Для этого не нужно использовать автокоманды или 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 начиная с версии 0.39 VTE, выпущенной в конце 2014 года, а также в xterm. Если вы хотите остановить мигание курсора, добавьте по одному к каждому из чисел и вставьте 2 в последовательность для t_EI (возможные последовательности перечислены в этого ответа ; см. Также Руководство по эксплуатации VT510 ).

0
ответ дан 13 October 2011 в 11:10

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

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