2016-04-10 22 views
0

我想將一個區域左移一個製表位,作爲一個剛性塊(不會更改內部行的縮進)。De-indent region as rigid block

下面是相關documentation的報價,但我不明白:

CX TAB這個命令是用來改變該地區開頭的行 的壓痕,移動受影響的線路爲一個「剛性」單位。

如果不帶參數調用,該命令會激活一個瞬態模式,以便 以交互方式調整受影響行的縮進。當 此瞬態模式處於活動狀態時,將LEFT或RIGHT分別向左縮進 並向右移一個空格。您也可以輸入S-LEFT或 的S-RIGHT向左或向右縮進到下一個製表位(請參閱標籤 制動器)。鍵入任何其他鍵將禁用瞬態模式,並恢復正常編輯。

我沒有看到瞬態模式。如何將區域移至上一個製表位?

一個 瞬態模式

Related answer, to un-indent by 4 spaces

+0

'CX '通常勢必'縮進rigidly' ......如果不是那麼也許檢查重點用'章k'然後'CX結合' – donkopotamus

+0

@donkopotamus'CX '好 - 我正在尋找de indent/un indent/dedent。 'C-h k'是一個很棒的提示 - 謝謝。 – Hatshepsut

+1

如果它被正確綁定,那麼'C-x '應該縮進到前一個'tab-width'的倍數。反而發生了什麼? – donkopotamus

回答

1

此行爲,在Emacs 24.4介紹。在這種情況下,提交者運行24.3。

在Emacs 24.3上,indent-rigidly不能向前或向後移動「到最近的製表位」。相反,它可能只能用於移動給定數量的字符。

例如:

  • 該地區左移由7個字符使用C-u - 7 C-x <tab>
  • 由3個字符的區域轉移到右邊用C-u 3 C-x <tab>
+0

Emacs 24.3在我的特殊情況下 – Hatshepsut

+0

哎呀,胖了兩次! – donkopotamus

1

我想你的目標也可以通過「矩形運算」來實現。

要將文本塊左移一個製表位,您只需刪除左側的一列製表符,然後文本塊將自動移動到左側的長度已被刪除。

這樣做的步驟:

  1. 選擇要刪除的區域的內容。請注意區域的起點和終點將是矩形的兩個頂點。
  2. 問題\C-x r dM-x delete-rectangle

而要將文本塊右移一個製表位,只需在文本塊之前插入一列製表符。

  1. 與上述相同。但是現在矩形的寬度應該是0(即該區域的起點和終點位於同一列)。
  2. issue \C-x r t <TAB>M-x string-rectangle。這裏<TAB>是你想要插入的內容,它可以是其他任何東西。