#emacs
#emacs
Вопрос:
Какой был бы самый простой способ изменить регистр прямоугольника?
Ни в одном из сокращений, упомянутых в руководстве, об этом не говорится. Должен ли я добавлять пользовательскую привязку для этого? И пока мы этим занимаемся, как мне выполнить поиск только внутри прямоугольника?
Ответ №1:
Вот реализация upcase-rectangle
, которая изменяет регистр на все заглавные. Просто замените upcase
на downcase
или capitalize
или любое другое пользовательское преобразование регистра, которое вы хотите:
(defun upcase-rectangle (b e)
"change chars in rectangle to uppercase"
(interactive "r")
(apply-on-rectangle 'upcase-rectangle-line b e))
(defun upcase-rectangle-line (startcol endcol)
(when (= (move-to-column startcol) startcol)
(upcase-region (point)
(progn (move-to-column endcol 'coerce)
(point)))))
Ответ №2:
Это просто с помощью cua-mode
поддержки выбора прямоугольника:
(setq cua-enable-cua-keys nil) ; enable only CUA's rectangle selections
(cua-mode t)
Затем вы можете выделять прямоугольники, нажимая C-RET и перемещая курсор. Чтобы изменить регистр этой области, просто используйте обычную upcase-region
команду, привязанную к M-U по умолчанию.
Комментарии:
1. Да и нет. Нет, потому что
upcase-region
не работает с прямоугольниками иM-u
являетсяupcase-word
по умолчанию (upcase-region
привязан кC-x C-u
). Да, потому что, когда выбран прямоугольник, CUA привязываетсяM-u
кcua-upcase-rectangle
, что, что неудивительно, прекрасно работает. Вы также можете использовать(cua-selection-mode t)
вместо приведенного кода.2. Спасибо за разъяснение, Фил, и подсказку о
cua-selection-mode
!3. Спасибо за комментарий и разъяснения. Но я нахожу это немного запутанным (?!), что некоторые полезные вещи недоступны из коробки с другими командами rect.
4. Согласен; Я предполагаю, что стандартная
C-x r
поддержка прямоугольников довольно ограничена. Я никогда не использовал это лично.