Я недавно спросил:
Как добавить префикс к каждой строке?
Итак, перейдите из кода ниже:
I said Hello
I said There
I said I am some code
Кодировать как:
Hello
There
I am some code
Теперь, как мне удалить n символов из строки?
text-editing
editing
Люк Шимкус
источник
источник
Ответы:
Это даже проще! Опять же, используйте команды прямоугольника . Переместитесь в один угол прямоугольника, который хотите удалить, нажмите,
C-SPC
чтобы установить метку. Переместитесь в другой угол прямоугольника и нажмитеC-x r d
(delete-rectangle
). Например, перейдите к первой строке, по которой вы хотите действовать, нажмитеC-a
или,home
чтобы перейти к началу строки, перейдите к последней строке, по которой вы хотите действовать, чтобы перейти в правый нижний угол, а затем удалить.C-u number C-f
C-x r d
Если в последней строке меньше нужного количества символов, может быть удобнее использовать нижний левый и верхний правый углы. Кроме того, вы можете вставить ненужные символы (это полезно, если первая и последняя строки короче).
Вы можете использовать,
C-x r k
чтобы убить прямоугольник, что позволит вам дергать (C-x r y
) его позже (переместитесь в верхний левый угол места, где вы хотите вставить его).Вы также можете использовать
C-x r t
(string-rectangle
) и ввести пустую строку.Команды прямоугольника основаны на положениях столбцов. Если вы хотите удалить n символов, а не n столбцов (что имеет значение для многостолбцовых символов, таких как вкладки), вы можете использовать замену регулярного выражения : заменить
^.\{42\}
ничем, чтобы удалить первые 42 символа каждой строки.источник
Еще одна возможность: мне действительно нравится использовать несколько курсоров для подобных задач. Доступный
package.el
через MELPA, он стал неотъемлемой частью моего emacs. Я бы просто выбралI said
(и, возможно, включил разрыв строки перед ним), использовалM-x mc/mark-all-like-this
и был бы на моем пути. Если вы хотите более детальный контроль, вы можете использоватьmc/mark-next-like-this
илиmc/mark-next-lines
.Мои сочетания клавиш:
Обязательные Emacs Rocks! эпизод: http://emacsrocks.com/e13.html
источник
Если вы
cua-mode
включили, то:Я предпочитаю
cua-mode
способ работы, по сравнению со стандартным прямоугольником Emacs, где эквивалент будет:cua-mode
Сохраняет три нажатия клавиш по сравнению со стандартным Emacs прямоугольника.источник
Для полноты: удаление первых 3 символов из каждой строки (формально: из точки или в регионе) может быть выполнено путем замены регулярного выражения
^...
(или, в более общем^.\{3\}
случае:) пустой строкой.Объяснение: в регулярном выражении
^
означает «начало строки»,.
означает «любой символ» и\{n\}
означает « n повторений вещи до».Это дает дополнительное преимущество
!
, заключающееся в том, что он интерактивный (если не нажимать , что делаетquery-regexp-replace
замену всего без дальнейших вопросов).источник
И еще одна возможность:
F3C-aC-3C-dC-nF4
записывает макрос клавиатуры, говоря в основном: «перейти к началу строки, удалить три символа и перейти к следующей строке». Затем вы можете воспроизвести его до конца буфера C-uF4или C-xC-krприменить его к строкам в области. У этого есть один недостаток: он сломается, когда любая строка содержит менее 3 символов.
источник
Если это всего лишь строка, вы можете выполнить zz-to-char с помощью Mz, предполагая, что символ не повторяется между точкой и той, которую вы хотите удалить до. В некоторых случаях это быстрее, чем создание региона.
источник