Сценарии визуального режима Vim: поиск текста, окружающего визуальный выбор - PullRequest
0 голосов
/ 27 мая 2009

попробую объяснить на примере ..

Если у нас есть такой код в vim:

if ($feck == true && $drink == false)
{
    echo 'They lie in wait like wolves..';
}

И я иду в визуальный режим и выбираю "$drink", например, есть ли способ:

  • определить, является ли текущий выбор одним из vim текстовые объекты (слово, слово, внутренняя {и т. д.)
  • выполнить поиск по обеим сторонам выделения, чтобы проверить наличие следующего доступного текстового объекта vim (опять же, слово, слово, блок, внутренняя часть и т. Д.)

Обратите внимание, что я имею в виду сценарии vim, а не просто редактирование, поэтому оба эти "действия" будут в функции, полученной из моего .vimrc

Кроме того, мне нужно было бы сделать это, не нарушая визуальное выделение и не перемещая курсор (или, если это действительно невозможно, восстановите как выделение, так и положение курсора).

Ответы [ 2 ]

1 голос
/ 29 мая 2009

Этот вопрос имеет смысл только в контексте этого другого вопроса от доктора Ганнибала Лектера.

Я думаю, что вы хотите достичь возможно, но это требует некоторой работы. Информация, приведенная в другом ответе и комментарии к вашему сообщению, уже указывают в правильном направлении.

Ваша функция vim, вызываемая из сопоставления клавиш «выделение расширением», должна выполнять следующие действия:

  1. Проверьте, что, вероятно, представляет текущий выбор (маркеры '<и'>, как описывает dwc, и функции vim должны быть полезны для этого). На подобные вопросы нужно ответить: «<и»> на одной строке? Все ли буквы между символами '<и'> iskeyword? Являются ли первый и последний символы специальных разделителей выделения, таких как '{', '(' и т. Д.? И т. Д. - встроенной функциональности, которая проверяет это автоматически, не существует. См. Также: help visualmode (

  2. Как только это будет определено, вы должны подумать, как бы вы хотели расширить свой выбор - однако логика для этого работает в ReSharper.

  3. Вам нужно позаботиться о том, чтобы вернуть курсор туда, где он был, в зависимости от команд, которые вы использовали для расширения выбора.

В целом, команды, представленные в: help eval.txt, помогут в реализации этого.

0 голосов
/ 27 мая 2009

После визуального выбора '< и '> доступны для использования во всем, что принимает «диапазон».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...