jEdit поддерживает редактирование блоков, но у Emacs и Vim, похоже, есть серьезные проблемы с юзабилити по той же теме. Если бы кто-то мог заполнить здесь неизвестные, было бы намного удобнее использовать любой из редакторов:
- Фактическое прямоугольное выделение : если выделение на экране представляет собой прямоугольник, а не линейное выделение, которое затем используется для вычисления региона, которым Emacs кажется ограниченным.
- jEdit: удерживайте Ctrlи выберите.
- Vim: Нажмите Ctrl-vи выберите.
- Emacs: неизвестно ; Похоже, плагин 400+ линий необходимо.
- Прямоугольное редактирование в реальном времени : смотрите, как будет выглядеть результат во всех строках, когда вы будете редактировать после выделения блока.
- jEdit: просто начните печатать, и вы увидите конечный результат по ходу дела.
- Vim: Нажмите Shift-iи введите. Конечный результат будет отображаться только в первой строке, пока вы не нажмете Escдля выхода из режима вставки. Неизвестно , есть ли какой-нибудь способ увидеть результат сразу по всем строкам.
- Emacs: неизвестно ; Похоже, единственный способ это C-x r tи настройка текста, чтобы заполнить после нажатия Ret.
- Начало и конец выделения в позициях вне текста : например, я хотел бы удалить N первых символов каждой строки, но первая и последняя строки содержат меньше N символов.
- jEdit: нет проблем, выбор блоков может начинаться вне текста.
- VIM:
:set virtualedit=block
. - Emacs: может быть возможно с
artist-mode
и / илиpicture-mode
.
- Вставить вставленный блок : вставьте скопированный блок, как если бы вы вставляли несколько строк, как, например, вставьте уже текст вниз , а не вправо.
- jEdit: по умолчанию. Чтобы вставить блок как блок, сначала нужно сделать выбор другого блока.
- VIM: OEscVp.
- Emacs: неизвестно .
Общие функциональные возможности выбора блоков Emacs можно найти в cua-mode
плагине .
Ответы:
Я могу ответить за Vim, но не за Emacs.
Начало и конец выделения в позициях вне текста:
:set virtualedit=block
включит поведение, которое вы хотите. Вы можете удалить начальное двоеточие и добавить его в свой .vimrc, если хотите. Для получения дополнительной информации,:help 'virtualedit'
изнутри Vim.Вставить блок в строке:
Если вы просто нажмете pв командном режиме, Vim вставит блок, нажимая символы справа на каждой строке. Если вы выберете другой блок и нажмете p, Vim заменит этот блок вставленным блоком.
Вы можете вставить блок "linewise" с последовательностью клавиш режима команды OEscVp. Это вставляет строку над текущей строкой (
O Esc
), выбирает ее linewise (V
), а затем вставляет поверх нее (p
). Вы можете сократить это до (например) ypс помощью отображения, такого как:nmap yp O<Esc>Vp
- type, что буквально; используйте пять нажатий клавиш<Esc>
вместо нажатия клавиши Escape.источник
virtualedit
; должен попробовать это. О встроенном вставке см. Обновленный вопрос с описанием ожидаемой функциональности.Emacs: начать выделение с первой строки и просто добавить недостающее количество символов (например, пробелы) в последнюю строку, а затем использовать kill-rectangle
В качестве альтернативы смотрите
artist-mode
илиpicture-mode
которые позволяют свободно перемещаться в окне независимо от длины строки.Emacs: сначала сохраните блок либо kill-rectangle, либо сохраните его в регистре, затем перейдите к точке вставки, используйте delete-rectangle и затем вставьте сохраненный прямоугольник.
В случае Emacs, почему это проблема? Плагин может быть скомпилирован, и философия emacs заключается в том, что вы не помещаете все в ядро, а используете плагины для расширения редактора.
источник
Существует «cua-mode», который поставляется с Emacsen 22.1 и более поздними версиями, или перейдите по ссылке, чтобы загрузить более ранние версии Emacs. Есть короткое видео, которое представляет функциональность.
Для общих команд прямоугольника, попробуйте прочитать руководство , которое обеспечивает простое введение.
источник
cua-mode
выглядит хорошо! +1 .. Я не смог найти упомянутое вами видео, см . Ссылку Тома в комментариях сразу под вопросом, чтобы найти ссылку на (другое?) Информационное видео ...В vim типичный способ удалить первые n символов - сделать что-то вроде
:%s/.\{0,6\}//
.%
сделает весь документ; Вы можете заменить это выделением или фактическими строками, которые вас интересуют. Командаs
для «замены». Он заменит регулярное выражение тем, что вы ему дадите, и будет совпадать только один раз в каждой строке, если вы не добавите конкретную опцию. Это/
разделитель - это может быть любой символ, но/
обычно он используется, если не выгодно использовать что-то еще (так что вам не нужно экранировать/
в остальной части команды). Аргумент после первого разделителя - это регулярное выражение, которое будет использоваться для поиска подходящих строк в вашем выделении. Аргумент после второго разделителя - это то, чем будет заменено совпадение.Таким образом, эта команда говорит найти от 0 до 6 экземпляров любого символа и заменить их ничем.
источник