привязка emacs (злая) для перемещения выделенных строк, вставки пробелов

Я хочу, чтобы привязка emacs (в режиме зла) брала выделение и перемещала его по одному пробелу за раз вправо или влево. Например, выделите пять строк, нажмите [некоторая клавиша], и все пять строк переместятся на одну позицию вправо, а затем нажмите [shift некоторая клавиша], и все строки переместятся на одну позицию влево.


person justingordon    schedule 27.03.2012    source источник


Ответы (1)


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

(defun jg-indent (start end count)
  (interactive "r\np")
  (save-excursion
    (let ((start (if (use-region-p)
                     start
                   (beginning-of-line)
                   (point)))
          (end (if (use-region-p)
                   end
                 (end-of-line)
                 (point))))
      (indent-rigidly start end count))))

(defun jg-unindent (start end)
  (interactive "r")
  (jg-indent start end -1))

(global-set-key "\C-c=" 'jg-indent)
(global-set-key "\C-c+" 'jg-unindent)
person Eric Johnson    schedule 27.03.2012
comment
Я только что наткнулся на отступ-жестко, что может быть лучшим выбором. Мой привязан к C-x C-i. - person Eric Johnson; 28.03.2012
comment
Эрик, это близко, но я теряю свой регион после первого попадания. Я хочу иметь возможность нажимать это несколько раз, например привязывать ctrl-= для перехода вправо и ctrl-+ (ctrl shift =) для перехода влево для региона, а если региона нет, следует использовать текущую строку. - person justingordon; 29.03.2012
comment
Я опубликовал лучший подход выше. Мне не удалось привязать его к ключам, которые вы хотели. Есть что-то неприятное в этих двух ключах. Извиняюсь! - person Eric Johnson; 29.03.2012