VIM: повторение движений t и t

442
dotancohen

;Движение предполагается повторить t, T, fи Fдвижение. Для fи Fэто прекрасно работает, так как курсор находится на символе. Однако нажатие ;после tили Tне работает, поскольку VIM снова и снова находит один и тот же символ (т. Е. Курсор не будет продолжать двигаться).

Есть ли обходной путь для этого? Можно ли считать это ошибкой VIM, хотя технически это правильно?

3
Обходной путь должен сделать `2;` Я не уверен, что это поведение можно считать ошибкой, но это должно быть более тщательно задокументировано. romainl 12 лет назад 0
Вам определенно стоит взглянуть на плагин easymotion - он полностью изменил мою точку зрения на f, F, t, T https://github.com/Lokaltog/vim-easymotion epsilonhalbe 12 лет назад 0

2 ответа на вопрос

5
garyjohn

Это поведение контролируется ;флагом «cpoptions». казнить

:verbose set cpo? 

чтобы увидеть, как ваши установлены.

Это viпроблема совместимости. Если ваш Vimнастроен как vi-совместимый, ;он будет включен в 'cpoptions', и вы получите поведение, которое вы наблюдаете. Увидеть

:help 'cpoptions' :help cpo-; :help 'compatible' 

Решение вашей проблемы зависит от того, как вы попали Vimв это vi-совместимое состояние. Обычно для этого нужно приложить дополнительные усилия, например, начиная Vimс "vim -u NONE", с -Cфайлом или без файла .vimrc в вашем домашнем каталоге.

Редактировать:

Эта проблема была исправлена ​​в Vim 7.3.235 с добавлением ;флага в «cpoptions». В более ранних версиях Vimвсегда ведет себя так, как описано в вопросе dotancohen.

Я не вижу упоминаний `;` в `: h 'cpoptions'` или`: h' совместимых`` и `: set cpo?` Возвращает `aABceFs`. Кажется, что ни одна из этих букв не связана с `tTfF` или`;, `. romainl 12 лет назад 0
Он находится внизу списка флагов под заголовком ": help 'cpoptions'". Смотрите ": help cpo-;". Я добавлю это к моему ответу. Значение 'cpo', которое вы видите, является значением по умолчанию, когда `Vim` запускается в режиме 'nocompatible', что является обычным случаем. Смотрите самую первую строку ": help 'cpoptions'". Если вы запустите `Vim` в режиме vi (т. Е. 'Совместимый'), например, пометив его как" vim -u NONE ", тогда cpo будет содержать все флаги опций, включая`; `, и вы получите vi -совместимое поведение `;`. garyjohn 12 лет назад 0
Ну, моя версия Vim - 7.3.35, и я вообще не вижу `;` в помощи. Кроме того, Vim выплевывает `E539`, когда я делаю`: set cpo + =; `, нахожусь ли я в совместимом режиме или нет. Это, вероятно, проблема с версией. romainl 12 лет назад 0
2
broomdodger

Насколько я помню, это была ошибка, которая сейчас исправлена.

Кажется исправлено в версии vim 7.3.584

Какую версию vim вы используете?

Билл

Спасибо, я все еще на 7.3.154. Приятно знать, что это исправлено! Как ты это нашел? Я не могу найти багтрекер VIM. dotancohen 12 лет назад 0
Там нет отслеживания ошибок, но вы можете найти описания патчей в ftp://ftp.vim.org/pub/vim/patches/7.3/README. Похоже, это было исправлено в 7.3.235: '";" застревает по команде "t", это бесполезно ". garyjohn 12 лет назад 2
Благодарю. Я нашел эту страницу, но не могу пройти первые 200 байтов или около того, страница зависает. dotancohen 12 лет назад 0
Эта ссылка была ftp, попробуйте эту ссылку http: http://ftp.vim.org/pub/vim/patches/7.3/README broomdodger 12 лет назад 0