Можно ли с помощью vim выбрать объект heredoc или «здесь документ»?

StackOverflow https://stackoverflow.com/questions/2343906

  •  23-09-2019
  •  | 
  •  

Вопрос

Одной из сильных сторон Vim является выбор объекта, предлагая быстрое манипулирование содержимым внутри слов, абзацев и различных разделителей.

Например,

vi{

выберет все внутри пары фигурных скобок {}.

Есть ли эквивалентная функция для выбора здесь документ или здесьдок:

<<<HTML
    ....
    ....
HTML;

На основе Ответ ErichBSchulz: Я придумал следующее для внутреннего селекта heredoc:

nmap <F6> ?<<<<CR>w*kV?<<<<CR>j

?<<<<CR>w    " find beginning tag (after <<<)
*k           " find matching end tag and go up 1 line
V            " enter visual mode
?<<<<CR>j    " find beginning tag and go down 1 line
Это было полезно?

Решение

Думая о предыдущих постах и ​​пытаясь приблизиться к ним на шаг.Это не будет на 100% надежным (т.е. сломается, если начальный тег встречается внутри heredoc, но что-то вроде:

?<<< "find begining
w    " go to starting tag
*    " find starting tag
v    " enter visual mode (could use Upper V to do an 'ambientish' object select 
n    " find end tag
e    " optional include end tag

Редактировать:Кен улучшил описанную выше последовательность, поэтому я предлагаю вам использовать его лучшее сопоставление клавиш для «внутреннего» выбора heredoc:

nmap <F6> ?<<<<CR>w*kV?<<<<CR>j

(это основано на документации в стиле PHP)

Другие советы

Для выбора документов я обычно помещаю курсор в первую строку над идентификатор Heredoc и нажмите В*

В начнет выбор линии, и * начнет поиск, переходя к следующему совпадению идентификатора, концу heredoc...

А <<'' heredoc завершается пустой строкой, это легко, если вы уже в начале (?<<^M^M): v} выбирает отсюда до пустой строки.

В противном случае в вашем примере лучшее, что я могу придумать, это v/^HTML.

Есть плагин, который позволяет вам определять свои собственные текстовые объекты.

http://www.vim.org/scripts/script.php?script_id=2100

Я думаю, было бы неплохо определить его, чтобы вы могли сказать «да» (дернуть в heredoc), чтобы вам не приходилось явно переходить к началу.

Заметьте, я сам с этим не дурачился.

Если вам просто нужен визуальный выбор, вы можете.

 nnoremap <leader>ih ?HTML<cr>V/HTML<cr>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top