Я недавно узнал multiple-cursors
, и это выглядит как очень полезный пакет. Я просмотрел документацию по исходному репо , но команды все еще выглядят немного неясными для меня.
Затем я посмотрел видео в Emacs Rocks !, и это отличное видео, но оно сосредоточено в основном на том, на что multiple-cursors
способен, а не на том, как это сделать.
Существуют ли какие-либо руководства, учебные пособия или примеры, иллюстрирующие его основные функции?
multiple-cursors
Амелио Васкес-Рейна
источник
источник
multiple-cursors
просто прочитав файл README. Моя рекомендация - просто учитьсяmc/mark-next-like-this
. Попробуйте и ознакомьтесь с тем, что он делает. Оттуда обращайтесь к README всякий раз, когда у вас возникает вопрос, который начинается с «Интересно, могут ли это делать несколько курсоров ...» Все это говорит, я думаю, что это более базовое введение, чем скалы Emacs! видео будет полезно для начинающих.Ответы:
В дополнение к описанию использования @bastibe я использую несколько курсоров для добавления или удаления текста в начале / конце группы строк:
set-rectangular-region-anchor
(привязанный к любому ключу, который вам нравится, я думаю, что предложение от Magnars было H-space, если у вас есть гипер-ключ)C-n
иC-p
), пока у вас не появится курсор на каждой строке, которую вы хотите редактироватьC-e
), чтобы внести туда изменения.Вы можете использовать
forward-word
иforward sentence
т. Д. Для перемещения вперед и назад по линиям, что позволяет редактировать четвертое слово в каждой строке, даже если текст в каждой строке не идентичен.В качестве примера, я делаю такую работу постоянно:
C-u M-!ls / test-dat / pp5 / * fsaRETURN
Это вставляет содержимое каталога pp5 в буфер. Я ставлю точку
!
в начале списка:→
→
→
→
И вуаля, вы преобразовали листинг файла в код, чтобы прочитать этот листинг. Это на самом деле гораздо сложнее описать, чем на самом деле сделать!
источник
multiple-cursors
могут составить действительно мощную комбинацию.phi-search
может быть более надежным, чем навигация с помощью таких команд, какM-f (x3)
phi-search
, это выглядит великолепно!У меня есть два варианта использования
multiple-cursors
:mc/mark-next-like-this
и,mc/mark-previous-like-this
чтобы отметить больше ее экземпляров. Затем я сразу же C-wудаляю, чтобы удалить каждый экземпляр, и вместо этого пишу новую строку. Я часто использую это для переименования переменной в коде.mc/edit-lines
чтобы получить один курсор на строку. Теперь вы можете использовать обычные команды редактирования, которые работают с каждым из этих курсоров.Первый вариант использования особенно полезен с
expand-region
. Яer/expand-region
привязался к C-j, иmc/mark-next-like-this
иmc/mark-previous-like-this
к C->и C-<. При этом я могу легко выбрать слово, которое включено, и мгновенно отметить следующее / предыдущее вхождение этого слова.Второй вариант использования заменил большинство использований макросов для меня. Вместо того, чтобы записывать макрос, а затем применять его в нескольких местах, я помещал курсор в каждое место и просто выполнял операцию во всех местах одновременно.
источник
multiple-cursors
рекомендуете, например,mark-next-like-this
&mark-previous-like-this
?C->
иC-<
дляmark-next-like-this
иmark-previous-like-this
.Я хотел бы добавить некоторые дополнения, которые я иногда использую
multiple-cursors
.Я нашел следующее, чтобы быть полезным:
гу-гоу к полукоксу
Иногда вам нужно перейти к следующему
#
или следующему,
или к определенному разделителю. Это особенно удобно, когда вам нужно перемещаться по разному количеству слов для каждого курсора. Он предоставляет функцииiy-go-to-char
иiy-go-to-char-backward
, которые вы можете связать и использовать красиво.расширить регион
Это действительно полезно по той же причине:
iy
когда под каждым курсором есть несколько разные строки, и вы, возможно, захотите выбрать строку в кавычках под точкой или подобным.пользовательские вещи
Это вещи, которые просто elisp в моем конфиге, но я считаю полезным. Вероятно, не написано мной.
Подсказка для ввода
Я получил это от Magnars в ответ на запрос о размещении различной строки под каждым курсором. Код прост, но привязка его к чему-либо и использование для нескольких курсоров - удобный способ вставлять немного разные вещи в каждом месте.
Номер приращения в точке
Это либо пришло от SO, либо от emacswiki. Не уверен, какой. Это довольно полезно само по себе, а также при использовании в сочетании с
mc/insert-numbers
eval-and-replace
Это супер мощный инструмент, который позволяет использовать некоторые действительно полезные биты 'n'. Он оценивает, какой пол находится за курсором, и вставляет результат его оценки.
Объедините это с,
multiple-cursors-numbers
например, для вставки степеней двух, или серии, которая проходит0 1 2 0 1 2 0 1 2
через каждую строку или что-то. (Я сделал оба из них с пользой) Или используйте его,s.el
чтобы записать эти утомительные настройки Java с настройками по умолчанию. Вы записываете каждыйCONFIG_VALUE_VARIABLE
, а затем трансформируете это вCONFIG_VALUE_VARIABLE = "configValueVariable"
бегs-camel-case
.источник
C-S-b
или,M-S-b
чтобы выбрать назад, пока не получите выделенную часть. Вы можете также использовать стрелку влево.C->
(нажмите Shift, если клавиша>
находится над клавишей клавиатуры), пока не будет выбрано более одного элемента.* Важно выбрать задом наперед или первый выбор поместит курсор в неправильное положение.
источник