Как перейти к началу/концу визуального выбора?
Есть ли движение для перехода к началу или концу визуального выделения? Я знаю o, в то время как в визуальном режиме чередуются между ними, но мне нужно уметь точно выбирать старт. Общая цель состоит в том, чтобы окружить визуально выбранную область круглыми скобками.
Основываясь на комментарии, я смог реализовать это, используя следующий макрос. Идея состоит в следующем:
-
<ESC>
для выхода из визуального режима
-
`<
, чтобы перейти к концу предыдущего визуального выделения
-
a)
добавить закрывающие круглые скобки
-
<ESC>
для выхода из режима вставки
-
`<
, чтобы перейти к началу предыдущего визуального выделения
-
i(
, чтобы вставить открывающиеся круглые скобки
-
<ESC>
, чтобы снова выйти из режима вставки.
например:
map \q <ESC>`>a)<ESC>`<i(<ESC>
Основываясь на другом комментарии, у нас есть еще более сжатое решение,
map \q c()<ESC>P
Ответы
Ответ 1
Самый простой способ "окружить визуально выбранную область круглыми скобками" - это d
elete it, i
nsert ()
и P
вернуть его в середине.
di()<ESC>P
Я предлагаю определить новую команду визуального режима .vimrc(например, "\ q" ) с этим:
:vmap \q di()<ESC>P
Обновить. Как было указано в @duckworthd, предыдущий сбой, когда последний char выбранной области является последним char в строке.
Новая версия: c
помещает визуально выбранную область на ()
и P
обратно в середину.
:vmap \q c()<ESC>P
Этот подход также работает с визуальными прямоугольными областями (<C-V>
): it
помещает "(" ") вокруг каждой строки блока
Ответ 2
Существуют две соответствующие встроенные метки, сохраняющие позиции первого и
последние символы последнего визуального выделения в текущем буфере.
Чтобы переместить курсор туда, куда указывают эти метки, используйте
команд `<
и `>
, соответственно.
(См. :help `>
, :help `<
.)
Ответ 3
Пока вы находитесь в Visual Selection
нажмите o. Он изменит положение курсора на другой конец выделения. Затем o, чтобы вернуться назад.
Ответ 4
если вы просто хотите окружить визуальный отбор, уже проделана работа, а именно: tim pope, который написал этот плагин под названием surround
. Он окружает слова или визуальный выбор разделителями по своему вкусу.
выберите свой визуальный выбор, скажем i like vim
нажмите S)
, чтобы получить (i like vim)
или S(
, чтобы получить ( i like vim )
, чтобы изменить это на [i like vim]
type cs]
(изменить окружение) и удалить ds]
, чтобы наконец получить i like vim
.
Ответ 5
Если вы не можете использовать Surrond.vim, вот один из способов сделать это:
- Сделайте свой визуальный выбор с помощью
v
или v
.
- Выйдите из него с помощью
<Esc>
.
- Введите
`>a)<Esc>
, чтобы вставить закрывающую скобку после последнего символа выделения.
- Введите
`<i(<Esc>
, чтобы вставить открытую круглую скобку перед первым символом выделения.