Как сделать так, чтобы vim перемещал курсор на символ вправо при вставке? - PullRequest
2 голосов
/ 30 апреля 2011

Поскольку Mac OS X's terminal.app не поддерживает многие визуальные аспекты vim, включая изменение курсора от блока к строке при переключении в режим вставки, я использую osascript, чтобы получить что-то подобное.

В моем .vimrc файле я написал:

autocmd InsertEnter * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 11`j
autocmd InsertLeave * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 12`j

, где settings set 11 - это набор настроек терминала с курсором строки, а settings set 12 - с блок-курсором.

На самом деле это работает довольно хорошо, но есть одна небольшая проблема. В InsertLeave курсор всегда перемещается на один символ влево, что не так уж и сложно, но это может раздражать.

Я пытался компенсировать это, вставив autocmd InsertLeave h в свой .vimrc, но безрезультатно (это дает мне ошибку).

Как мне сказать vim:

  1. не сдвиг влево?
  2. , если вышеупомянутое не возможно, компенсировать, сдвигая вправо

1 Ответ

1 голос
/ 30 апреля 2011

Прежде чем ответить на вопрос, я бы порекомендовал вам посмотреть в MacVim (если вы этого не сделали). Если вы хотите (или должны) придерживаться терминала, возможно, другой терминал, такой как iTerm, предоставит больше функциональности. В любом случае, изменение курсора между блок-баром отсутствует в iTerm (по крайней мере, я так думаю), и ваш способ его решения был феноменальным, теперь он добавлен в закладки Спасибо!


Простой способ решить эту проблему - добавить еще одну автокоманду, как вы сказали. Но у вас шаблон и правильная команда для выполнения отсутствуют.

h не является командой. Чтобы выполнить последовательность нормальный режим , используйте команду :normal. Это может работать правильно:

au InsertLeave * normal! h
...