Я нещодавно запитав:
Як додати префікс до кожного рядка?
Тож перейдіть з наведеного нижче коду:
I said Hello
I said There
I said I am some code
Для кодування типу:
Hello
There
I am some code
Тепер, як видалити n ряд символів з рядка?
Я нещодавно запитав:
Як додати префікс до кожного рядка?
Тож перейдіть з наведеного нижче коду:
I said Hello
I said There
I said I am some code
Для кодування типу:
Hello
There
I am some code
Тепер, як видалити n ряд символів з рядка?
Відповіді:
Ще простіше! Знову ж використовуйте команди прямокутника . Перейдіть до одного кута прямокутника, який потрібно видалити, натисніть, C-SPCщоб встановити позначку. Перемістіться до іншого кута прямокутника і натисніть C-x r d( delete-rectangle). Наприклад, перейдіть до першого рядка, над яким ви хочете діяти, натисніть C-aабо homeперейдіть до початку рядка, перейдіть до останнього рядка, над яким ви хочете діяти, щоб перейти до правого нижнього кута, а потім видалити.C-u number C-fC-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.
Мої клавіші:
(use-package multiple-cursors
:bind (("C->" . mc/mark-next-like-this)
("C-M->" . mc/mark-all-like-this-dwim)))
Обов’язкові скелі Emacs! епізод: http://emacsrocks.com/e13.html
Якщо ви cua-modeввімкнули, то:
Я віддаю перевагу cua-modeспособу роботи, порівняно зі стандартним прямокутником Emacs, де еквівалент буде:
cua-modeЗберігає три натискання клавіш по порівнянні зі стандартним Emacs прямокутника.
Для повноти: видалення перших 3 символів з кожного рядка (формально: з точки далі або в регіоні) може бути здійснено шляхом заміни повторним виразом ^...(або більш загально ^.\{3\}:) порожнім рядком.
Пояснення: у regexen ^означає "початок рядка", .означає "будь-який символ" і \{n\}означає " n повторень речі раніше".
Це має додаткову перевагу бути інтерактивною (якщо не натискати !, що змушує query-regexp-replaceзамінити все відтепер без зайвих питань).
І ще одна можливість:
F3C-aC-3C-dC-nF4
записує макрос клавіатури, кажучи в основному "перейти до початку рядка, видалити три символи та перейти до наступного рядка". Потім ви можете відтворити його до кінця буфера C-uF4, або C-xC-krзастосувати його до рядків у регіоні. У цього є один недолік: він порушиться, коли будь-який рядок містить менше 3 символів.