在幾行上減少縮進
回答
通常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. 預期的「縮進」,得到了「減少縮進」功能後
- 4. 筆ParseError:預計 「縮進」,得到了 「減少縮進」
- 5. PostgreSQL複製行減少幾列
- 6. 縮進Emacs中的幾行
- 7. 如何在地圖上執行地圖縮減在mongodb中減少結果
- 8. 十大路徑縮減地圖減少
- 9. 縮小/減少衝突
- 10. 縮小/減少語法
- 11. 在UITextView iOS 7上減少行距
- 12. 減少行數
- 13. 將以下幾行PhotoImage代碼減少爲儘可能少的行數
- 14. 減少重複幾乎模板實例
- 15. 減少行繼續在Excel
- 16. 減少Python代碼生成中嵌套函數的縮進
- 17. 的CoffeeScript - 無與倫比的減少縮進
- 18. 減少TreeViewItem中最深的節點的縮進
- 19. 如何用括號來減少Resharper的縮進?
- 20. 進口減速多少Django?
- 21. Cocos2d進度間隔減少
- 22. 芹菜。減少進程數
- 23. 儘量減少PHP進程
- 24. OMP並行減少
- 25. 行減少加入
- 26. Lapack的行減少
- 27. 有沒有一種快速的方法來減少Python中多行的縮進?
- 28. CPU上的數組並行減少
- 29. DC.js,crossfilter - 減少運行()上groupAll()
- 30. 長Hadoop的運行,停留在減少>減少
我不知道我得到你的意思。你能否詳細說明你的解釋? – 2012-03-14 20:43:41
許多emacs模式具有自動縮進功能 - 當您在線上的任意位置點擊[tab]時,它會將線縮進到應該放在的位置。我很少需要擔心手動縮進任何東西 - 我只是讓編輯爲我完成這項工作。 – 2012-03-14 20:44:44
我希望能夠做到與「Tab」相反的功能;我通常需要這樣做,當我複製過去的代碼與另一個文件位置不同時。 – sramij 2012-03-14 21:06:52