在google上搜索了很久,没有找到中意的答案。于是到这来提问,希望能够得到满意的答案。
问题是这个样子的:
在emacs中写jade这类代码时,格式显得尤为重要,但是我不知道如何将选中的代码块整体左移。所以有时改代码时显得很费劲,希望得到各位的帮助。
本人现在还不会elisp,如果是修改配置的话,望能添出代码
谢谢。
在google上搜索了很久,没有找到中意的答案。于是到这来提问,希望能够得到满意的答案。
问题是这个样子的:
在emacs中写jade这类代码时,格式显得尤为重要,但是我不知道如何将选中的代码块整体左移。所以有时改代码时显得很费劲,希望得到各位的帮助。
本人现在还不会elisp,如果是修改配置的话,望能添出代码
谢谢。
在文本模式下,先用C+@ 标记你想要作左移的区域块, 之后直接按TAB
在C语言模式下,emacs可能会自动用cc-mode来自动调整你的TAB,此时不能直接按TAB,而是C+x,
TAB。
PrintList(n1); int ToFind; ToFind = atoi(argv[2]); printf("find (%d) at %d\n", ToFind, LocateElem(n1, ToFind)); ListInsertTail(&n1, 13); PrintList(n1); ListInsertTail(&n1, 23);
上面代码块中的第2行到倒数第2行,即是我在C语言模式下,3次C+x, tab 后的试验结果。
看看是不是你想要的。
更新一下:我这个回复是将代码“右移”, 在提交之后才想起,可能不是你想要实现的“左移”, sorry!
`(defun shift-text (distance)
(if (use-region-p)
(let ( (mark (mark)))
(save-excursion
(indent-rigidly (region-beginning)
(region-end)
distance)
(push-mark mark t t)
(setq deactivate-mark nil)))
(indent-rigidly (line-beginning-position)
(line-end-position)
distance)))
(defun shift-right (count)
(interactive "*p")
(shift-text count))
(defun shift-left (count)
(interactive "*p")
(shift-text (- count)))
`
应该可以满足
;; 以下方法不限于 jade-mode
;; 选中要 indent 的 region
;; M-x indent-rigidly ;; 默认已绑定到 Ctrl-x TAB
;; C-u 10 C-x TAB ;; 整体右移 10 个字符
;; C-u -2 C-x TAB ;; 整体左移 2 个字符
我会使用键盘宏来完成这一操作
C-x (
开始录制宏C-x )
录制结束C-u [执行次数] C-x e
执行键盘宏录制过程:
删除若干空格(左移偏移量) 命令 C-d
下一行 C-n
行头 C-a