как я могу отменить визуальный режим программно в VIM - PullRequest
1 голос
/ 13 октября 2010

Я запускаю немного кода в Vim и у меня проблема (я думаю) из-за того, что я не в правильном режиме.Я пытаюсь получить текст между '<>' или '[]' в регистр.Когда код точки начинается ниже, я знаю, что курсор находится между парой скобок, но я не знаю, какие это скобки:

    " put text in x reg if I'm in <> brackets
    normal! vi<"xy
    " put in x reg if I'm in [] brackets
    if len(@x) < 7 
           normal! vi["xy
    endif
   [. .. . more code follows making use of
           value in x register]

Если я щелкаю между скобками <> остальную частьКод работает хорошо, хотя я не могу быть в нормальном режиме.Если я нажимаю между скобками [], то это не работает вообще, и буквальный текст ["xy вставляется в позицию курсора.

Я пробовал несколько различных обходных путей, например, пытаясьположить в цепочку ключей (или отдельную нормальную команду) или с помощью «Visual!»Команда после каждой визуальной части. Не удается добиться успеха, и команда Visual! избегает вставки символов во второй части, но, похоже, также мешает получить визуальное совпадение в регистр x.

I'mЯ немного сбит с толку и не уверен, в каком режиме я нахожусь в точности во всех частях скрипта: нормальном, визуальном или вставном. Я запускаю вещи вручную, и это, кажется, работает нормально, но если я делаю это программно, он ведет себя неожиданно.

Есть ли какая-то простая вещь, по которой я скучаю? Я мог бы сделать то, что я хочу, другим способом, но этот метод (на первый взгляд) показался мне самым простым и простым. Так ли это?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 13 октября 2010

Хорошо, я разобрался с проблемой. Режим был оставлен в визуальном режиме, когда первая команда внутренней скобки не нашла соответствия. Требуется дополнительный символ «v» для возврата в обычный режим, прежде чем снова нажимать клавиши. Как это:

    " put text in x reg if I'm in <> brackets
    normal! vi<"xy
    " put in x reg if I'm in [] brackets
    if len(@x) < 7 
           "  EXTRA V IN LINE BELOW
           normal! vvi["xy
    endif
   [. .. . more code follows making use of
           value in x register]
...