Emacs的Tab鍵與縮排

2021-09-08 07:04:22 字數 1547 閱讀 2411

*** 在預設的鍵繫結下,tab鍵是這樣工作的

(見indent.el中indent-for-tab-command函式)

if 選擇的是塊

then 對塊進行語法縮排

else

if (eq tab-always-indent t)

then (按下tab鍵時始終對當前行按語法縮排,不管是在行開始的空白處還是

後面的位置,縮排量與tab-width引數無關,只與當前語法風格有關係,具體

縮排由indent-line-function完成,各個模組可重新定義這個函式)

else

if 如果游標在

1)行首空白區(即在indentation區內),則取消所有縮排

2) 行首第乙個非空白字元上, 則按第一次則語法縮排,第二次則插入

tab字元或者空格(插入tab還是空格則依賴於indent-tabs-mode設定)

3) 不在行首,插入tab字元或者空格

*** tab-width / default-tab-width

只影響真正tab字元的顯示寬度,不影響按tab鍵的縮排量(但會反過來

將縮排量換算為tab字元個數+空格個數,這與其它編輯器相反,它們是每次新增

tab字元或者相應的空格數)

*** m-i & tab-stop-list

m-i在功能上跟平日裡在其它編輯器裡面的tab鍵倒有點相近(如果所選的不是一

塊的話),它會將後面的字元向後移動,移到tab-stop-list裡面所指向的下乙個

stop點,具體是填充tab字元還是空格以及多少個,也是由indent-tabs-mode和

tab-width確定。(這個tab-stop-list對於程式設計人員,似乎沒有什麼用處)。

*** 不插入tab字元,因為tab是**的(setq indent-tabs-mode nil),實在需要tab鍵則用c-q tab

*** 每次縮排4個空格(setq default-tab-width 4)

*** 縮排完全自行控制,不用syntax indentation來自動 (按語法格式化完全可以使用c-_)

*** 按tab鍵時

如果選擇多行,則縮排(行首插入多個空格)

如果未選擇多行,當前游標在行首(不管是indentation區還是第乙個字元上),則縮排

游標不在行首,插入多個空格[1]

*** 按shift-tab鍵時

如果選擇多行,則反縮排(行首刪除多個空格)

如果未選擇多行,游標在行首,反縮排

游標不在行首,發向移動游標或者什麼也不做

emacs, indent/unindent region as a block using the tab key

[1] 如果要將**補齊考慮進來,則:

如果游標在乙個單詞的末尾,則tab鍵需要啟用補全函式

如果單詞後有乙個空格,再按tab鍵則新增空格

上面鏈結中的實現也考慮了,如果要對接其它的**補齊,只需要將(hippie-expand nil)換成其它的即可,比如auto-complete的ac-start

檔案語法縮排tab鍵的設定

yml檔案語法縮排的設定 以yml檔案縮減為例 由於yml檔案是兩個空格一縮排,所以用乙個tab鍵來表示乙個縮減 即 乙個tab鍵代表兩個空格 1 在需要建立裡yml檔案使用者的家目錄下編寫隱藏檔案.vimrc檔案 只在設定的使用者操作下生效 devops server1 pwd home devo...

vim開啟行號與調整tab縮排

vim預設的tab長度是8,很不爽感覺,下面進行修改,具體方法如下 1.建立檔名為 vimrc 的系統檔案 首先切換到使用者根目錄,然後建立檔案。cd vim vimrc2.在檔案中輸入下面的內容並儲存 set tabstop 4 set shiftwidth 4 setnumber 關閉行號則 s...

vim的tab鍵設定

多在windows上程式設計的童鞋可能習慣於感受tab鍵為4個空格的長度,不過在linux系統中一般預設設定tab鍵為8個空格長度來顯示。事實上tab也確實是8個空格的長度。不過由於習慣問題,某些童鞋還是希望在linux上也感受tab鍵為4個空格長度的顯示,因為vi編輯器在linux上是那麼地眾所周...