如何在vim中仅使用制表符(而不是空格)

Fre*_*ind 64 vim indentation

我更愿意用tabwhite space(可能会有点不同,大多数人的)

但是我发现,当我Enter在线的末尾点击时,它会添加一些空格,但不会添加制表符.所以,我必须删除它们并按Tab键.

我想知道如何将vim设置为:

  1. 仅使用制表符缩进行
  2. 选项卡看起来像4个空格,但实际上是一个选项卡
  3. enter在一行的末尾点击时,新行仅使用制表符启动

我已经谷歌搜索了一段时间,但没有找到一个好的答案.先感谢您


UPDATE

@Alok提供的答案在大多数情况下都很有效.但我发现,有时候,它取决于文件类型.例如,如果您正在编辑一个haml文件,并有一个haml.vim在你的vimfiles/indent/,那么所有的标签将被转换为space.因此,如果您只想要它tab,您应该修改(或删除)相应的缩进文件.

Alo*_*hal 92

您正在寻找的设置是:

set autoindent
set noexpandtab
set tabstop=4
set shiftwidth=4
Run Code Online (Sandbox Code Playgroud)

作为单行:

set autoindent noexpandtab tabstop=4 shiftwidth=4
Run Code Online (Sandbox Code Playgroud)

autoindent可以替换为smartindentcindent取决于您的口味.另外看看filetype plugin indent on.

http://vim.wikia.com/wiki/Indenting_source_code

  • 也添加`softtabstop = -1`. (3认同)

wir*_*hin 14

讨论迟到了,仅适用于那些努力强制使用选项卡的人。使用当前版本的vim ( >8 ) 需要设置:

:set noet ci pi sts=0 sw=4 ts=4
Run Code Online (Sandbox Code Playgroud)

扩展到:

:set noexpandtab
:set copyindent
:set preserveindent
:set softtabstop=0
:set shiftwidth=4
:set tabstop=4
Run Code Online (Sandbox Code Playgroud)

我们还可以仅对特定文件类型使用此设置,利用setlocal

autocmd FileType c,cpp,java,python setlocal noet ci pi sts=0 sw=4 ts=4
Run Code Online (Sandbox Code Playgroud)

如需进一步参考,请参阅:https ://vim.fandom.com/wiki/Indent_with_tabs,_align_with_spaces