2010-08-19 75 views
3

有一個更好的方式來縮進使用Emacs的stackoverflow帖子的代碼塊。我目前的策略是:Emacs命令縮進4個空格的代碼格式粘貼到stackoverflow帖子

  1. 選擇一個文本區域
  2. 執行所的Mx縮進碼剛性地
  3. 運行CXž三次到縮進當前區域

這似乎是腦 - 死。請賜教我如何以巧妙和優雅的方式來實現這一點。

+1

可能重複:http://stackoverflow.com/questions/594156/using-emacs-to-indent-shift -4-code – aioobe 2010-08-19 06:36:45

+0

Cx Cz ???這將暫停活動的Emacs框架...您不應該只需要縮進代碼即可。 – 2010-08-19 07:24:29

+0

錯字:C-x z就是我的意思。而另一個線程已經以幾種不同的方式回答了這個問題。 – speciousfool 2010-08-19 07:31:39

回答

3

這是不是從scottfrazer的回答重大差異,但它是一個稍微容易鍵入:C-u C-x C-i

+0

我見過的內置解決方案的鍵擊最少,不難記得。 – speciousfool 2010-08-19 23:50:58

+0

我從來不知道C-u的默認前綴是4.非常有用 – seans 2012-12-14 22:49:11

5

我最近創建的這個有用的命令:

(defun stackoverflow-copy-code-snippet (begin end) 
    (interactive "r") 
    (let ((buffer (current-buffer))) 
    (with-temp-buffer 
     (insert-buffer-substring-no-properties buffer begin end) 
     (indent-rigidly (point-min) (point-max) 4) 
     (clipboard-kill-ring-save (point-min) (point-max))))) 

我只是用它來自己的源複製到這個職位。如何元!

+0

出於某種原因,當我執行stackoverflow-copy-code-snippet時,它不會將縮進的字符串複製到剪貼板。相反,它將「stackoverflow-copy-code-snippet」複製到我的剪貼板。這是在emacs 23.2.1 – speciousfool 2010-08-19 10:21:51

+0

我使用22.3,但我只是下載和編譯23.2和stackoverflow-copy-code-snippet仍然適用於我。我可能應該提到該例程會縮小區域的內容並將其複製到系統剪貼板中,因此您需要在調用該區域之前設置該區域。這可能解釋你的行爲。 – Sean 2010-08-19 17:25:13