*** 在預設的鍵繫結下,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上是那麼地眾所周...