Я использую ViM, TextMate и GNU Emacs в течение многих лет.
Например вот текст, который я хочу редактировать
foo
foo
foo
И вот текстовый результат, который я хочу получить
bar foo
bar foo
bar foo
Когда я нахожусь на Vim, я могу сделать "Ctrl v" в самой первой строке и первом столбце, затем нажать "2 j", затем нажать "i", затем набрать "bar", готово.
Когда я нахожусь на TextMate, я могу нажать «Apple Command Option», выбрав вниз (с помощью моей мыши), а затем введите «бар», готово.
Но когда я нахожусь на GNU Emacs 23.1, я не знаю, как это сделать. : ((
Я искал EmacsWiki и гуглил вокруг, но не нашел решения. Пожалуйста, ведите меня, если вы знаете мое решение. Был бы благодарен за это.
Ответы:
На ум приходят два варианта. Первый - это прямоугольники (как уже упоминалось в другом ответе). Явные указания для этого:
Другой вариант, который обеспечивает очень хорошие команды редактирования прямоугольника / столбца, - это режим CUA . Вот сообщение в блоге (раскрытие: мой блог), в котором описывается, как его использовать. Чтобы увидеть мощь режима CUA, стоит посмотреть это трехминутное видео .
Я интегрирую режим CUA со следующим (потому что я предпочитаю не иметь режим переходной метки):
источник
В Emacs-24.4 базовая поддержка прямоугольников была немного улучшена, поэтому вместо использования
C-SPC
followC-x r t
вы можете сделать:Одна из приятных особенностей этого
C-SPC
метода по сравнению с тем , что вы получите визуальный отклик о выбранном прямоугольнике. Конечно,cua-mode
метод работает также (и работает аналогично).источник
cua-mode
было ли это более правильным ... Просто упомянуть одну вещь: вcua-mode
то время как прямоугольник выделен, я могу печатать и добавлять текст. В текущей встроенной emacs «base support» выделение исчезает (выбор «отменен»), и ввод вставляется в точку курсора. Этоcua-mode
(global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)
.C-t
операция прямоугольника без CUA (akaC-x r t
) также показывает предварительный просмотр вновь вставленного текста по мере его ввода.В Emacs такие столбцы называются «прямоугольниками». Так что это соответствующая страница документации.
Все эти команды требуют, чтобы область содержала прямоугольник, с которым вы работаете. Таким образом, вам нужно установить метку на верхнем левом символе в прямоугольнике и расширить область до нижнего правого символа в прямоугольнике. Команда, которую вы ищете,
M-x string-insert-rectangle
запрашивает строку для вставки.источник
Кратчайший ответ: включите режим прямоугольника CUA через C-RET.
Так что для вашего случая это было бы
bar
SPCСмотрите ответ @Trey для более сложного решения и ссылки на CUA.
источник
Вы можете использовать replace-regexp для этого:
Это добавит бар в начало строки.
источник