У меня есть код ниже:
Hello
There
I am some code
И хотите добавить код перед ним, например:
I said Hello
I said There
I said I am some code
Так как бы добавить префикс к каждой строке?
У меня есть код ниже:
Hello
There
I am some code
И хотите добавить код перед ним, например:
I said Hello
I said There
I said I am some code
Так как бы добавить префикс к каждой строке?
Вы можете добавить префикс с M-x string-rectangle
, который связан с C-x r t
. Это часть серии команд, которая работает с прямоугольными выделениями ; этот вставляет текст в каждую строку в прямоугольнике.
Начните с установки метки в начале первой строки и переместите курсор на первый символ последней строки, которую вы хотите поставить в качестве префикса:
*Hello
There
▮I am some code
Затем используйте C-x r t
, введите свой префикс ( I said
) и нажмите RET
. Это добавляет текст к каждой строке в прямоугольнике:
I said Hello
I said There
I said I am some code
Если вы не наведите курсор на тот же столбец, что и ваша отметка, он перезапишет эту часть прямоугольника:
*Hello
There
I am▮ some code
с той же командой приводит к:
I said o
I said e
I said some code
M-x string-insert-rectangle
. Это очень похоже, ноstring-insert-rectangle
вставляет в начале каждой строки выбора, в то время какstring-rectangle
заменяет , так с ним вы должны быть более точным о своем выборе , если вы не хотите , чтобы перезаписать что - нибудь.Вы можете использовать режим нескольких курсоров , чтобы поместить курсор на каждую строку. Затем любой введенный вами текст будет вставлен в каждую строку.
Вы должны начать с точки в начале фрагмента кода:
Тогда ударь C->дважды. (Это рекомендуемая привязка ключа; вы должны установить ее самостоятельно.) Это создает два дополнительных курсора в следующих двух строках:
Затем введите
I said
. Текст будет добавлен в каждой строке:Наконец, нажмите, RETчтобы выйти из режима нескольких курсоров и оставить точку на последнем курсоре:
Вот видео, которое показывает, как это работает.
источник
Лично я предпочитаю
replace-regexp
(замените «^» на «я сказал»).источник
Другой вариант - использовать макросы, которые могут обрабатывать больше задач, чем прямоугольные выделения или множественные курсоры, даже если это немного сложнее для данного конкретного случая.
Поместите курсор в начало первой строки и нажмите, F3чтобы начать запись, вставьте текст, переместите курсор в начало следующей строки и нажмите, F4чтобы остановить запись. Теперь нажмите еще F4раз, чтобы повторить макрос, C-2 F4повторить его дважды или C-0 F4повторять до тех пор, пока не встретится ошибка (например, отсутствие строк).
источник
Вы можете установить зло и сделать это любым количеством vi-подобных способов - я предпочитаю визуальный выбор блоков, используя Ctrl+, Vчтобы отметить каждую строку, а затем Shift+, Iчтобы вставить, а затем набрать текст, который вы хотите вставить, и, наконец, нажать, ESCчтобы выйти из режима вставки, и текст будет добавлен к каждой строке. Это очень похоже на выбор прямоугольника в emacs, но несколько меньше нажатий клавиш.
источник
Это очень похоже на ответ Артаньона, но
replace-regexp
не связано ни с одним ключом.Итак, я на самом деле использую,
query-replace-regexp
который по умолчанию привязан к,C-M-%
а затем заменяется^
данным префиксом,I said
а затем набираю,!
чтобы заменить все, не запрашивая больше.источник
Если вы
cua-mode
включили, то:I said
как текст для вставкиЯ предпочитаю
cua-mode
способ работы, по сравнению со стандартным прямоугольником Emacs, где эквивалент будет:I said
RET вставить текстcua-mode
Сохраняет два нажатия клавиш по сравнению со стандартным Emacs прямоугольником.Но для меня дополнительным преимуществом cua-mode является то, что я могу добавлять текст в прямоугольник (лично я не знаю, как добавлять текст со стандартным прямоугольником Emacs). В режиме cua, это только одно RETнажатие клавиши, перед вводом
I said
.источник