Редактирование блока *живет* в Emacs или Vim

Мой переключатель от Debian до Ubuntu запустил день, который я пытался удалить некоторые файлы и каталоги, означая вводить

rm -r /var/tmp/*

К сожалению, я вставил пробел между "/var/tmp /" и "*" и еще хуже, я был в корне файловой системы.

root@workstation:/# rm -r /var/tmp/ *

Не пробуйте это дома!

9
13.04.2017, 15:37
4 ответа

Я могу ответить за 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 - введите это буквально; используйте пять нажатий клавиш для <Esc> вместо того, чтобы нажимать Клавишу выхода.

7
27.01.2020, 20:05
  • 1
    Хорошая подсказка о virtualedit; должны испытать это. О встроенной вставке посмотрите обновленный вопрос для описания ожидаемой функциональности. –  l0b0 15.10.2011, 23:55
  • 2
    Я обновил свой ответ с методом для вставки блоков linewise. –  Jander 16.10.2011, 08:11

Например, я хотел бы удалить N первые символы каждой строки, но первые и последние строки содержат меньше, чем символы N.

Emacs: запустите выбор в первой строке и просто добавьте недостающее количество символов (например, пробелы) к последней строке и затем используйте уничтожать-прямоугольник

С другой стороны, посмотрите artist-mode или picture-mode которые позволяют Вам свободно перемещаться в окно независимо от длин строки.

Встроенный блок вставки

Emacs: Сначала сохраните блок или уничтожать-прямоугольником или сохранением его к регистру, затем перейдите к точке вставки, используйте удалять-прямоугольник и затем вставьте сохраненный прямоугольник.

похож на 400 +, плагин строк необходим

В случае Emacs, почему это - проблема? Плагин может быть скомпилирован, и emacs философия - Вы, не помещают все в ядро, но используют плагины для расширения редактора.

5
27.01.2020, 20:05

Существует 'cua-режим', который идет с Emacsen 22.1 и позже, или перейдите по ссылке для загрузки для более ранних версий Emacs. Существует короткое видео, которое представляет функциональность.

Для общих прямоугольных команд попытайтесь читать руководство, которое обеспечивает легкое введение.

4
27.01.2020, 20:05
  • 1
    emacs cua-mode хорошие взгляды! +1.. Я не мог найти видео, которое Вы упомянули, см. ссылку Tom в комментариях сразу ниже вопроса для ссылки на (отличающийся?) информационное видео... –  Peter.O 15.10.2011, 10:01
  • 2
    @fered Ooops, ошибка сокращения/вставки, зафиксирован. –  Trey Jackson 15.10.2011, 17:31

В энергии типичный способ удалить первые n символы состоит в том, чтобы сделать что-то как :%s/.\{0,6\}//.

% сделает целый документ; можно заменить это выбором или фактическими строками, о которых Вы заботитесь. s команда для "замены". Это заменит регулярное выражение тем, что Вы даете ему, и это будет только соответствовать однажды на каждой строке, если Вы не добавите определенную опцию. / разделитель - это может быть любым символом, но / обычно используется, если не выгодно использовать что-то еще (таким образом, Вы не должны выходить / в остальной части команды). Аргументом после первого разделителя является регулярное выражение, которое будет использоваться для нахождения соответствующих строк в выборе. Аргумент после второго разделителя - то, чем будет заменено соответствие.

Таким образом, эта команда говорит, находят от 0 до 6 экземпляров любого символа, и ничем заменяют их.

0
27.01.2020, 20:05
  • 1
    Не, что я попросил. –  l0b0 15.10.2011, 23:51
  • 2
    , Но Вы думаете, что это не полезно для других, которые находят этот вопрос? Я думаю, что это, и вот почему я поместил его здесь. –  Shawn J. Goff 16.10.2011, 19:22

Теги

Похожие вопросы