在几行上减少缩进
回答
通常emacs会在您点击<TAB>
时放置当前样式指定的东西,因此这里自然会有些不同。想到的最接近的东西是M-\
,它围绕点折叠水平空白。如果要在线条之前删除空格的“矩形”,则delete-rectangle
可能更合适,您可以通过设置标记和移动点来选择矩形,然后使用C-x r d
来做到这一点。
这听起来像你试图解决的问题是当你剪切/粘贴时不正确的代码缩进。您可以通过使用类似以下的内容自动重新缩进文本来解决这个问题。
注:使用前缀参数强制无重压痕(C-ùC-Ÿ),加上有大小阈值变量。
;; automatically indenting yanked text if in programming-modes
(defvar yank-indent-modes '(emacs-lisp-mode
c-mode c++-mode
tcl-mode sql-mode
perl-mode cperl-mode
java-mode jde-mode
lisp-interaction-mode
LaTeX-mode TeX-mode)
"Modes in which to indent regions that are yanked (or yank-popped)")
(defvar yank-advised-indent-threshold 1000
"Threshold (# chars) over which indentation does not automatically occur.")
(defun yank-advised-indent-function (beg end)
"Do indentation, as long as the region isn't too large."
(if (<= (- end beg) yank-advised-indent-threshold)
(indent-region beg end nil)))
(defadvice yank (after yank-indent activate)
"If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)."
(if (and (not (ad-get-arg 0))
(member major-mode yank-indent-modes))
(let ((transient-mark-mode nil))
(yank-advised-indent-function (region-beginning) (region-end)))))
我敢肯定,这段代码运作良好,但[auto-indent-mode.el](https://github.com/mlf176f2/auto-indent-mode.el/)被主动维护并具有更多功能。虽然门槛是一个非常好的主意。 – 2012-03-15 01:04:17
@event_jr我不明白关于正在积极维护的东西的观点。我在3年前编写了上面的代码,并且不需要“维护”它,它可以完成它本来应该做得很好的单一事情...... – 2012-03-15 15:04:02
它这样做 - 还有很多其他的事情来确保代码自动缩进。更多功能意味着更多buts和更多可能与其他模式的不良交互。因此,作者正在积极研究这一点很重要。 – 2012-03-15 15:29:54
- 选择您所在的地区;
- 类型C-u后跟要缩进的空格的数量(如果要减少缩进,则为负数);
- 使用C-x TAB(默认绑定到
indent-rigidly
)将缩进应用到区域。
这比S-TAB更加繁琐,但恕我直言,是某种形式的情况下,Emacs的格式不得已不会解决你的问题。
编辑:更好的解决方案:Shift a region or line in emacs(接受的答案)。这是我目前在Emacs中用于更改缩进的内容。警告:涉及一些Emacs Lisp。
谢谢。如果我想在几行缩进中增加或减少制表符的数量(而不是空格),该怎么办? – Tim 2016-04-29 15:29:43
只需将C-u之后的值乘以制表符宽度即可。 – 2016-05-02 05:56:25
@Tim更好的方式在这里描述 - http://stackoverflow.com/questions/3156450/shift-a-region-or-line-in-emacs(接受的答案) – 2016-05-02 06:00:15
这可能更简单,更直观:首先确保cua-mode
已启用(M-x cua-mode
切换它)。然后转到行首并按C-return
。出现一个红色矩形。现在向下移动光标,然后按需要增大矩形长度。然后按C-d
将其删除。而已。
当主模式没有规定任何自动缩进(或弄乱时)时,我经常遇到这个问题。
有很多更可以用CUA模式的矩形做,看http://trey-jackson.blogspot.com/2008/10/emacs-tip-26-cua-mode-specifically.html
- 1. 减少缩进在TextMate中不工作
- 2. Firebug - 如何减少节点的缩进?
- 3. 缩进Emacs中的几行
- 4. 如何在地图上执行地图缩减在mongodb中减少结果
- 5. 缩小/减少语法
- 6. 将以下几行PhotoImage代码减少为尽可能少的行数
- 7. 减少行继续在Excel
- 8. 如何用括号来减少Resharper的缩进?
- 9. 的CoffeeScript - 无与伦比的减少缩进
- 10. 进口减速多少Django?
- 11. Cocos2d进度间隔减少
- 12. 尽量减少PHP进程
- 13. Lapack的行减少
- 14. OMP并行减少
- 15. 行减少加入
- 16. 有没有一种快速的方法来减少Python中多行的缩进?
- 17. CPU上的数组并行减少
- 18. DC.js,crossfilter - 减少运行()上groupAll()
- 19. 我可以将剃须刀代码减少到几行吗?
- 20. 减少一个UIImage的质量(压缩),
- 21. 缩短功能以减少重复性
- 22. 在android上的Qt,减少二进制大小
- 23. 减少在C
- 24. 在ASP.NET中进行URL重写时减少CPU开销
- 25. 如何在地图中对数据进行排序减少hadoop?
- 26. 在CouchDB中使用多个参数进行映射/减少?
- 27. SASS在多行上缩进语法?
- 28. 在多行上缩进HTML标签
- 29. 减少输出必须更快收缩 - 减少到文档列表
- 30. 减少操作上火花
我不知道我得到你的意思。你能否详细说明你的解释? – 2012-03-14 20:43:41
许多emacs模式具有自动缩进功能 - 当您在线上的任意位置点击[tab]时,它会将线缩进到应该放在的位置。我很少需要担心手动缩进任何东西 - 我只是让编辑为我完成这项工作。 – 2012-03-14 20:44:44
我希望能够做到与“Tab”相反的功能;我通常需要这样做,当我复制过去的代码与另一个文件位置不同时。 – sramij 2012-03-14 21:06:52