我更喜欢使用tab
而不是white space
(可能和大多数其他的有一点不同)
但是我发现,当我点击行尾的Enter
时,它会添加一些 * 白色**,但不会添加制表符。因此,我必须删除它们并按制表符。
我想知道如何将vim设置为:
1.仅使用制表符缩进行
1.制表符看起来像4个空格,但实际上是制表符
1.当在行尾点击enter
时,新行仅以制表符开始
我已经在谷歌上搜索了一段时间,但没有找到一个好的答案。提前谢谢你
更新
@Alok提供的答案在大多数情况下都能很好地工作。但是我发现,有时候,它取决于文件类型。例如,如果你正在编辑一个haml
文件,而你的vimfiles/indent/
中有一个haml.vim
,那么所有的制表符都将转换为space
。所以如果你只希望它是tab
,您应该修改(或删除)相应的缩进文件。
3条答案
按热度按时间mnowg1ta1#
您要查找的设置是:
作为单行:
autoindent
可以替换为smartindent
或cindent
,这取决于你的口味。也可以看看filetype plugin indent on
。http://vim.wikia.com/wiki/Indenting_source_code
rwqw0loc2#
在讨论的后期,只为那些努力强迫使用制表符的人准备。在当前版本的 vim(〉8)中,它需要设置:
其扩展为:
我们还可以将此设置仅用于特定的文件类型,利用
setlocal
:如需进一步参考,请参阅:https://vim.fandom.com/wiki/Indent_with_tabs,_align_with_spaces
8cdiaqws3#
在我的例子中,
set indentexpr=
做到了这一点。我找到了一些配置文件,其中设置了
fd python.vim /
的恼人行为。在/usr/share/vim/vim90/indent/python.vim
中有一行setlocal indentexpr=python#GetIndent(v:lnum)
。函数python#GetIndent
定义在/usr/share/vim/vim90/autoload/python.vim
中。该函数返回了一个奇怪的值,该值不是shiftwidth
和tabstop
的倍数。因此,Vim插入了一个制表符,后面跟着一些空格。现在,我已经将
indentexpr
设置为空值,我认为vim福尔斯到autoindent
。smartindent
和cindent
被关闭。(https://vimhelp.org/indent.txt.html)当然
set noexpandtab
也是必需的,我不确定这里是否有其他相关的设置。编辑:
autoindent
并不完美,它所做的无非是缩进新行和前一行一样多。不能像预期的那样工作,而且
cindent
似乎不适合python,所以使用indentexpr
毕竟是要走的路。幸运的是,缩进功能是可以配置的,请参阅
help ft-python-indent
或查看代码--这是关于disable_parath括号_indenting功能的更多信息。(https://vi.stackexchange.com/a/38824/43863)