在以下示例中:
\t
但只显示4-col空白?根据{{1}} 8
tabstop
点击有不同的结果? (一个是<TAB>
,另一个是09
)20202020
我创建了以下文本,首先插入8个空行,然后在每行的开头键入,这样就没有生成set noexpandtab
set tabstop=8
set shiftwidth=4
set softtabstop=4
。 (通过点击shiftwidth
)插入下面的每个4-col空白:
<TAB>
然后我做了1tab done
2tabs done
3tabs done
4tabs done
1tab
2tabs
3tabs
4tabs
,这就是我得到的(带有一些尾随的换行符):
:%!xxd
有一些非常好的答案here但我仍然不明白在这种特殊情况下会发生什么。
答案 0 :(得分:1)
softtabstop
旨在以这种方式使用,它会使您的标签显示一定的长度,即使它们确实是tabstop
的长度
'softtabstop''sts'号码(默认为0)
...
这有助于将'ts'设置保持为标准值 8,虽然能够编辑像它被设置为'sts'。然而, 像“x”这样的命令仍然适用于实际的字符。
至于在开头插入空格的奇怪行为,我确信它与smarttab
有关,默认情况下是{和1}},而不是在行的开头插入制表符
'smarttab''sta'boolean(默认开启)global
开启时,&lt;标签&gt;在一条线前插入空白根据 'shiftwidth' 的。 “tabstop”或“softtabstop”用于其他地方。一个 将在开头删除'shiftwidth'值的空间 线。
答案 1 :(得分:0)
IGI-111正确回答了您的第一个问题,尽管可能不够明确。
- 为什么在第一行插入
,不应该是\t
但只显示4-col空白?根据{{1}}8
醇>
请记住,TAB不会插入固定数量的空格,但会将位置提升到某个数字的下一个倍数(如果从零开始编号)。
你是什么意思&#34;即使他们真的是长度
tabstop
&#34;
他必须表示当打印到终端时,TAB字符会导致光标位置前进到tabstop
(8)的下一个倍数,同时在{{中按 Tab 1}}前进到tabstop
(4)的下一个倍数。如果vim
的下一个倍数不是softtabstop
的倍数,softtabstop
必须使用空格(0x20)。
- 为什么第一行和第五行中的两个
醇>tabstop
点击有不同的结果? (一个是vim
,另一个是<TAB>
)
那是因为在键入09
后,您在第一行中点击 Tab ,i。即你在第4位并前进到第8位,这是20202020
的倍数,一个TAB(0x09)完成了这项工作,而在第五行你在第一行打了 Tab 位置0并前进到位置4,这不是1tab
的倍数,需要空格。