Я'd как вставить восстановленный текст в командную строку в Vim. Возможно ли это?
Да. Нажмите <и>сочетание клавиш Ctrl</КБД и GT;-<и>Р</роз> потом <и>" и</роз>. Если у вас есть буквальном управляющие символы в то, что вы выдернули, используйте <и>сочетание клавиш Ctrl</КБД и GT;-<и>Р</роз>, <и>сочетание клавиш Ctrl</роз>-<и>о</роз>, <и>" и</роз>. Вот объяснение того, что можно сделать с регистрами. Что можно сделать с помощью регистров-это необычно, и как только вы знаете, как их использовать, вы не можете жить без них. Регистры в основном места для хранения строк. Vim имеет много регистров, которые работают по-разному:
0
(америкос Регистрация: когда вы используете Y
в нормальном режиме, без указания регистрации, восстановленный текст идет туда, а также в регистр по умолчанию), 1
до 9
(сдвиг удалить регистров, при использовании таких команд, как " с " или "D", что был удален поступает в Регистр 1, что в Регистр 1 поступает в регистр 2, и т. д.), "
(регистр по умолчанию, также известный как безымянный регистр. Это где <и>" и</роз> приходит в <и>сочетание клавиш Ctrl</КБД и GT;-<и>Р</роз>, <и>" и</КБД и GT;), A
до Z
для собственного использования (с большой буквы А
до Z
для добавления в соответствующие регистры). _
(действует как /dev/нуль
(Unix) или нуль
(Windows), то вы можете написать его, но это'ы отброшены и когда вы читаете его, он всегда пустой), -
(малые удалить реестр), /
(поиск по шаблону реестр, обновляется, когда вы ищите текст с/
, ?
, *
или#
, например; вы можете также написать к нему, чтобы динамически менять шаблон поиска), :
(магазины VimL последней набранной команды через М
или :
, чтения), +
и *
(регистр буфер обмена, вы можете написать им чтобы установить буфер обмена и чтение содержимого буфера обмена от них)
Увидеть:регистры Helpдля получения полной справки. Вы можете в любой момент использовать:регистров для отображения содержимого всех регистров. Синонимы и shorthands для этой команды являются:дисплей
, Рег
и Ди
.
В вставки или в режиме командной строки, <и>сочетание клавиш Ctrl</КБД и GT;-<и>Р</роз> плюс зарегистрировать имя, вставляет содержимое этого регистра. Если вы хотите вставить их в буквальном смысле (нет авто-отступов, без преобразования в управляющие символы, как бит 0x08
в забой и т. д.), Вы можете использовать <и>сочетание клавиш Ctrl</КБД и GT;-<и>Р</роз>, <и>сочетание клавиш Ctrl</роз>-<и>о</роз>, зарегистрировать имя.
Вижу:помочь i_CTRL-R` и следующие пункты для получения дополнительной информации.
Но вы можете также сделать следующее (И я, вероятно, забыла множество применений для регистров). "
нормальный командный режим, в котором можно выбрать, что реестр должен быть использован в течение следующего Янк, удалить или вставить. Так <и>" и</роз><и>:</роз> выбирает Колон Регистрация (запоминание последней команды). Затем <и>Р</КБД> есть команда вы уже знаете, он вставляет содержимое регистра.
см. :помогите с "
, :помочь quote_:
.vimrc
) и хотел бы выполнить несколько последовательных линий прямо сейчас: yj:@"Enter.
Здесь, <и>г</роз><и>Дж</роз> янки текущей и следующей строки (это потому, что J является порядный движения, но это выходит за рамки данного ответа) в регистр по умолчанию (также известный как безымянный регистр). То:@бывшей команды играет экс-команды, хранящейся в регистре, заданного в качестве аргумента, и в
"это как вы будете ссылаться на неназванные регистрации. Также см. В верхней части этого ответа, что связано. Не путайте в
"используется здесь (который является именем регистра) с в
"из предыдущего примера, который был нормальный режим команд. см.
:помогите :@и
:помочь quote_quote` :помочь quote_/
, помогите i_CTRL-Р
Вывод: держите ваш шаблон поиска, но добавить альтернативу: /
<и>на Ctrl</КБД и GT;-<и>Р</роз>, <и>/</роз> \|альтернатива
. г
, они в безымянный регистр. Теперь вы хотите открыть новую линию чуть ниже, где вы находитесь, с эти два слова: ПУ
. Это сокращение для :поставить на "
. о :поставить команду
, как и многие бывшие команды, работает только порядный.
см. :помогите :путь Вы могли бы также сделать:
:вызов setreg(' и"', @то", 'в'), то
р. В
setregфункция устанавливает регистр которого название дано в качестве первого аргумента (в виде строки), инициализирует его с содержимым второй аргумент (и вы можете использовать регистры в качестве переменных с именем
@хгде
X- это название регистра в VimL), и превращает его в режим, указанный в третьем аргументе, " V " для порядный, ничего не посимвольный и буквальное
^Вдля blockwise. см.
:помочь setreg(). Обратной функции
getreg()и
getregtype()`. ОК
...Q
, то :эхо @а
расскажет вам, что вы набрали, и @A
будут анализировать макро (наверное, ты знал, что один, весьма полезный для того, чтобы избежать повторяющихся задач)
см. :помочь Q
, помогите @
Следствие из предыдущего примера: если у вас 8го в буфер обмена, а затем @+
будет воспроизводить содержимое буфера обмена как макро -, так и уходят в 8 байт файла. На самом деле это будет работать с практически в каждом регистре. Если ваши последней вставленной строки " ДД " в режиме вставки, а затем @.
будет (потому что .
регистр содержит последней вставленной строки) удалить строку. (ВИМ документации является неправильным в этом отношении, поскольку в нем указано, что регистры#
, %
, :
и .
будет работать только с п
, р
,: "путь" и <и>на Ctrl</роз>-<и>Р</КБД и GT;). см.
:помочь @ Дон'т путать
:@(команда, которая играет Vim команд из регистра) и
@(нормальный режим команда, которая играет в обычном режиме команд из регистра). Заметным исключением является
@:. Команда регистр не содержит начальный кишки не содержат окончательного возврата каретки. Однако в нормальном режиме,
@:будет делать то, что вы ожидаете, перевод регистр команды Ex, не пытаясь воспроизвести его в обычном режиме. Так что если ваш "последний приказ"
: е, реестр содержит
Eа
@:будет перезагрузить файл, а не перейти к концу слова. см.
:помочь @:` @='ДД'
<и>введите</роз>. Как только вы нажмете =
ключ, ВИМ переключатели для выражения оценки: как вы введите выражение и нажмите <и>введите</роз>, ВИМ вычисляет его, и результатом служит содержимое регистра. Конечно регистре =
только для чтения, и один выстрел. Каждый раз, когда вы начнете использовать его, вы должны ввести новое выражение.
см. :помочь quote_=
Следствие: если вы редактируете команды, и вы поймете, что вам нужно вставить в командную строку некоторые строки из текущего буфера: Дон't нажмите <и>Эку</роз>! Использовать <и>сочетание клавиш Ctrl</КБД и GT;-<и>Р</роз> =Гэтлину(58)
<и>введите</роз>. После этого вы вернетесь на редактирование командной строки, но он вставлен содержание 58-й строке. :пусть @/ = 'фу'
см. :помогите :дайте Обратите внимание, что делая это, вам не нужно'т бежать
/` в шаблоне. Тем не менее, вы должны удвоить все одинарные кавычки, конечно. Foo
, и после этого все строки, содержащие бар
в буфер обмена, цепочка этих команд: qaq
(сброс а регистр хранения пустой макрос внутри него), :г/^фу/г
, :г/бар/г
, :Пусть @+ = @а
.
Используя имя уставной капитал составляет реестр работает в режиме добавления
Лучше, если Q
, то не был переназначен на mswin.ВИМ, начать бывшая режим с Q, а услуги тех, “двоеточие”, которые на самом деле лучше называть “бывших команд”, и вернуться в нормальный режим, вписав визуальный
.
см. :помогите :г
, :помогите :г
, :помочь Q
:г/^/поставить _
. это ставит содержание черных зарегистрировать отверстие (пустой при чтении, но запись ведут себя как порядный/dev/нуль`), после каждой строки (Ведь каждая линия имеет начало!). фу
до каждой строки: :г/^/-поставить ='фу'
. Это умное использование регистра выражение. Здесь, -
синоним .-1
(ср. :помогите :спектр
). С:поставь добавляет текст после строки, вы должны явно указать, чтобы он действовал от предыдущего. :%г+
.
см. :помогите :спектр
(Для%
) и :помогите :г
. <и>сочетание клавиш Ctrl</роз>-<и>Р</роз>
=заменить(@а, то"' наша" на"''" и,'т')<и>введите</роз>
'` и отредактировать его. Это позволит изменять содержимое макрос, хранящийся в регистре "а", и это'ы здесь показано, как можно использовать регистр выражение для этого. дддд
, вы могли бы сделать уу
для того, чтобы отменить. С P
вы могли получить последние удаленные линии. Но на самом деле вы можете также восстановить до 9 удаляет с ККМ @1
через @9
.
Еще лучше, если у вас в "1П
, тогда .
в нормальном режиме будет играть в "2Р
, и так далее.
см. помогите!
и :помочь quote_number
=strftime('%y%m%d')
Enter.
см. :помочь функцию strftime()
Еще раз повторюсь, что может сбить с толку: : @
- это команда, которая интерпретирует содержимое регистра как vimscript и его источники @
в обычном режиме команда, которая интерпретирует содержимое регистра в нормальном режиме нажатия клавиш (кроме случаев, когда вы используете :
регистр, который содержит последние играли команды без первоначального двоеточие: в этом случае он переигрывает команды, а если вы повторно ввели Толстой и окончательного возвращения ключа). "
в обычный командный режим, который поможет вам выбрать регистр для янки, вставить, удалить, исправить и т. д. "
также является допустимым именем регистра (по умолчанию, или безымянный, реестр) и поэтому могут передаваться в качестве аргументов для команды, которые ожидают регистрации именДля оклейки чего-то, что системный буфер обмена, вы можете просто использовать <и>сдвиг</КБД и GT; - <и>ины</роз>.
Он работает в Windows, но я думаю, что это слишком хорошо работает в Linux.
"Я'd как вставить восстановленный текст в командную строку в Vim.&и"
В то время как топ-проголосовали ответ очень полный, я предпочитаю редактирование истории команд.
В обычном режиме, типа: в:
. Это даст вам список последних команд, редактирования и поиска нормальной команды ВИМ. Вы'будете начать на пустом командной строке внизу.
За то, что в статье спрашивает, вставив дернул линии (или стащил что-нибудь) в командной строке дергать свой текст, а затем: в:р
(в командный истории режим редактирования, а затем (п)ут ваш восстановленный текст в новую командную строку. Редактировать по желанию, <и>введите</КБД>, Чтобы выполнить.
Чтобы выйти из режима командной истории, он'ы прямо противоположное. В обычном режиме в командной истории, типа: :Г
+ <и>введите</КБД>
Для оклейки чего-то из системного буфера обмена в Vim в командной строке ("и командный режим"), использовать <и>клавиши Ctrl</роз>+<и>Р</роз> за <и>+</роз>. Для меня, по крайней мере на Ubuntu, <и>сдвиг</роз>+<и>ины</роз> не работает.
ЗЫ: не знаю, почему <и>на Ctrl</роз>+<и>Р</роз> за <и>*</роз>, который теоретически таким же, как <и>клавиши Ctrl</роз>+<и>Р</роз> за <и>+</КБД> не'т, кажется, работают всегда. Я искали и обнаружил <и>+</роз> версия и это, кажется, работает всегда, по крайней мере на моей коробке.
Это's стоит отметить также, что регистры дергать такие же, как на макро-буферов. Иными словами, вы можете просто написать всю твою команду в свой документ (в том числе ваш вставленный фрагмент), затем в "К
, чтобы стянуть их, чтобы зарегистрировать "Б", а затем запустить его с @б
.
У меня была аналогичная проблема. Я хотел, выделенный текст, чтобы в конечном итоге в команду, а не полагаться на вставить его в. Здесь'команда S Я пытался написать сопоставление:
:call VimuxRunCommand("python")
Документы для Этот плагин только показать, используя строковые литералы. Следующие сломается, если вы пытаетесь выделить текст, содержащий прямые кавычки:
vnoremap y:call VimuxRunCommand("<c-r>"")<cr>
Чтобы обойти это, вы просто ссылаться на содержимое макроса с помощью @
:
vnoremap y:call VimuxRunCommand(@")<cr>
Передает содержимое неименованного зарегистрируйтесь и работает с моей двойные кавычки и многострочных edgecases.
Айфон
Если вы используете Vim в Mac и OSX, к сожалению, это приходит с более ранней версии, и не соблюдены параметры буфера обмена. К счастью, доморощенного можете легко решить эту проблему.
установите ВИМ:
`зелье установите ВИМ --с-Луа --с-процентовка-система-ви``
установить графический версию ВИМ:
варево установить macvim --с-Луа --с-процентовка-система-ви
перезапустить терминал, чтобы вступили в силу.
<БР>
добавьте следующую строку к ~/.vimrc
<БР>
`набор буфер обмена=безымянный``
теперь вы можете скопировать строку в Vim с ый
и вставить его в масштабах всей системы.
этот вопрос довольно старый, но так как он был просмотрен так много раз, кажется, чтобы быть популярным - Я'МР поставили здесь для потомков. для контекста, эта информация приходит из вне---коробки, нет плагинов, нет .vimrc в Vim 7.4 поведения в линукс Минт с параметрами по умолчанию.
вы всегда можете выделить текст с помощью мыши (или с помощью V или V и размещение на выбор в "* реестр), и вставить его в командную строку по Shift-ПНО-В.
набрав ПНО-R в командной строке приведет к вводу имени регистра. так набрав :ПНО-Р поместить содержимое регистра в командной строке. он будет вставлять любой регистр, а не только на "*. см.: справка c_CTRL-Р .
кроме того, средняя кнопка мыши вставить в командную строку. см.: справка->цитата-плюс описание как Х11 занимается селекцией. даже в обычном, из коробки ВИМ (опять же, в Vim 7.4 в линукс Минт, как ни крути), любой сделанный выбор с помощью левой кнопки мыши можно вставить в командную строку с помощью средней кнопки мыши.
кроме того, средняя кнопка мыши и вставить выделенный текст в Vim во многих других приложений X11, даже с GUI (например., в Firefox, Thunderbird) и вставить текст в командную строку тоже можно, где текст был выбран из других приложений.
см.: справка->Х11-выбор для дополнительная информация.
многабукаф.
попробуйте :подход ПНО-р во-первых, затем использовать Shift-ПНО-V или средней кнопкой мыши, Если вам нужно что-то еще.
он признал, что это может привести к путанице.