Как получить курсор курсора в Vim в терминале Cygwin?

46

Я привык иметь блок курсора в нормальном режиме в Vim. Это имеет смысл с парадигмой Vim; когда вы нажимаете x, становится ясно, какой символ будет удален.

Я установил Cygwin на компьютер с Windows, но когда я использую Vim на своем терминале, я получаю Iкурсор даже в обычном режиме. Как я могу сделать курсор вместо блока?

Kazark
источник

Ответы:

73

Этот вопрос в списке рассылки Cygwin отвечает на этот вопрос, устанавливая некоторые тайные переменные в соответствующие escape-последовательности. Добавьте это к вашему .vimrc:

let &t_ti.="\e[1 q"
let &t_SI.="\e[5 q"
let &t_EI.="\e[1 q"
let &t_te.="\e[0 q"
Kazark
источник
2
у меня это работало при использовании mintty для ssh на сервере linux
zzapper
2
Огромное спасибо. Должен любить чистое решение, которое работает в 2 самых раздражающих случаях :)
RLD.
3
Ницца. К сожалению, в ConEmu это влияет на курсор на весь сеанс. Тем не менее, он работает, как и ожидалось в VIM. Он также отлично работает в эмуляторе терминала cygwin. Но кто это использует? ;)
Джордж Мариан
Почти идеально ... но при выходе из режима вставки он возвращается к строковому курсору, пока вы не переместите курсор в каком-либо направлении.
Джо Кодер
1
Работал у меня в версии Vim, установленной автоматически с Cmder. Спасибо!
Bangash
33

Для этого в эмуляторе терминала cygwin есть настройка:

Щелкните правой кнопкой мыши строку заголовка окна> Параметры> Внешний вид> Курсор> Переключатель курсора

Джонни Хоанг
источник
В завершение, этот вид опций такой же, как и у любого другого окна терминала Windows, которым является Cygwin.
mveroone
6
Pro: my .vimrcможет быть более совместимым с моим Linux или Windows .vimrc. Con: теперь у меня есть курсор блока в режиме вставки, когда я хотел Iкурсор в этом режиме. +1
Казарк
5
вопрос касался управления курсором в VIM, но этот ответ влияет на курсор для всего сеанса оболочки, как в командной строке, так и в VIM
Дэвид Альперт
1
@EdRandall это вопрос о терминале Cygwin и vim. Этот ответ относится к Cygwin стороне вопроса.
Джаред
1
Это не отвечает на вопрос полностью. Vim использует 2 типа курсоров. В обычном, визуальном или командном режиме это блок. В режиме вставки это вертикальная полоса. Эти инструкции предназначены для оптовых изменений в определенном эмуляторе терминала (cygwin), хотя большинство должно иметь что-то подобное. Таким образом, он влияет на курсор повсюду в терминале и, что более важно, он не имитирует функциональность курсора vim.
Джордж Мариан
3

Создайте файл ~/.minttyrc, добавьте к нему строку ниже

CursorType=block

Затем перезапустите mintty, который является терминалом Cygwin по умолчанию.

qeatzy
источник
0

Или вы можете создать командный файл:

 %SYSTEMDRIVE%\cygwin\bin\mintty.exe ^
        -s 132,50 -o ScrollbackLines=10000 ^
        -o BackgroundColour=54,54,54 ^
        -o Transparency=High -o OpaqueWhenFocused=yes ^
        -o CursorColour=Green -o CursorType=block -o CursorBlinks=no ^
        -o Font=Consolas -o FontHeight=10 ^
        /bin/env CHERE_INVOKING=1 /bin/bash -l -i

И запустить его.

Если вам не нравится мигающий курсор в окнах команд DOS, тоже используйте %COMSPEC%вместо /bin/env/...и удивляйтесь.

Андреас Шпиндлер
источник