В командной строке нажмите, <C-u>
затем введите @*
и введите.
<C-u>
удалит визуальный диапазон '<,'>
, который был автоматически вставлен, если какой-либо текст выбран визуально.
:@*
выполнит содержимое *
регистра, которое содержит все, что визуально выбрано в данный момент.
Даже если выбранный / выделенный текст находится в вашем веб-браузере (firefox, chrome, ...), он будет работать, *
реестр позволит вам получить к нему доступ непосредственно в vim.
Если текст выбран в буфер Vim, другое решение , чтобы скопировать его в названном регистре, например в регистр путем ввода "ay
.
Затем в командной строке введите: <C-r>a
и введите.
Ctrl+ rвыдаст вам подсказку, представленную символом "
(подробнее читайте :h c_Ctrl-r
).
В этом новом приглашении, если вы дадите имя регистру, его содержимое будет вставлено в командную строку, где вы сможете редактировать его перед выполнением.
Кроме того, если вы скопируете какой-либо текст без указания регистра, он будет доступен из неназванного регистра » .
Итак, предположим, что у вас есть строка vimscript в файле и вы хотите быстро ее получить, вы можете скопировать ее Y
, а затем :<C-r>"
ввести ее в командной строке с помощью: и ввести.
Наконец, если вы используете это последнее решение, есть проблема, о которой вы должны знать.
Если вы видите странный символ в командной строке, такой как это ^M
, это обозначение каретки возврата каретки. Вы должны удалить его, иначе вы, вероятно, получите ошибку.
В итоге вы:
- скопируйте вашу строку vimscript с помощью
Y
- переключиться в командный режим с
:
- нажмите,
<C-r>
чтобы ввести запрос регистров
- типа
"
для вызова безымянного регистра
- нажмите Backspace, чтобы удалить
^M
персонажа
- и нажмите ввод.
@*
, спасибо!: <C-r>a
этого на самом деле тоже работает нормально :) Я думаю, vim прочитал^M
's, как возвращает строку - и выполнил каждый как свою отдельную строку / команду?На самом деле я делаю это немного по-другому, я просто делаю правки в моем vimrc и повторно использую его каждый раз, когда пишу. (У меня есть каскадный набор файлов vimrc, поэтому я могу изменить любой из них.)
источник
Более непосредственно к вопросу, чем к моему другому ответу, вы можете определить отображение, как это (
nnoremap
без выбора, просто выполните текущую строку;vnoremap
для, когда визуальный режим активен):В обоих случаях «текущей строкой» является
:execute
d, поэтому в визуальной версии вы:execute
просматриваете одну строку за другой посредством визуального выбора.Как указано в другом ответе,
<C-u>
удаляется спецификация диапазона, которая появляется в командной строке при :вводе. Эти|
символы должны быть экранированы , потому что в противном случае они интерпретируются как конецvnoremap
команды.Это также может быть превращено в функцию избавления от какой-либо гимнастики по побегу, но сейчас это не кажется мне огромной победой. В основном это будет vnoremap, расширенный до нескольких строк и отредактированный
call
с диапазоном или без, в зависимости от режима отображения [nv].источник