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


76

我更愿意用tabwhite space(可能是从其他大多数的有点不同)

但是我发现,当我Enter在行尾点击时,它将添加一些空格,但不会添加tab。因此,我必须删除它们,然后按tab

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

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

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


更新

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


与其修改已安装的文件,不如尝试将您的替代设置放入$HOME/vimfiles/after/indent/haml.vim。请参阅:help after-directory以获取更多信息。
Nefrubyr

2
对于不同的文件类型,通常具有不同的选项卡/空间首选项。在Vimcasts.org上查看我的截屏视频,其中显示了如何为不同的文件类型设置空白首选项。该解决方案使用您的vimrc,但如果您要设置许多不同的文件类型,则最好按照Nefrubyr的建议使用after-directory。
纳尔斯特朗

/ after / indent技巧还可以消除python文件中那些讨厌的空格,要查看的有问题的文件是ftplugin / python.vim,只需复制带有setlocal的行并将其复制到@Nefrubyr建议的空白文件中,对其进行编辑并恢复理智。
保罗,

Answers:


104

您正在寻找的设置是:

set autoindent
set noexpandtab
set tabstop=4
set shiftwidth=4

作为单行:

set autoindent noexpandtab tabstop=4 shiftwidth=4

autoindent可以根据您的喜好替换为smartindentcindent。也看看filetype plugin indent on

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


正如@freewind所说,在处理.haml文件时它不能很好地工作。就我而言,我使用vim janus,我只添加建议的单行,但不适用于haml文件。任何的想法?
alexventuraio

4
也添加softtabstop=-1
Walf

如果您正在使用neovim,请查看一下,:help option因为至少“ autoindent和noexpandtab”是默认选项。
SergioAraujo

是否有一些快速的方法可以在制表符或空格之间来回切换?我应该打开一个新的SO任务吗?
fde-capu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.