【发布时间】:2013-02-16 18:33:47
【问题描述】:
我通常希望始终使用四个空格来缩进代码。 不幸的是,例如 Makefiles 强制使用制表符作为分隔符。
我现在的想法是将 tab 键设置为四个空格,并为真正的 tab 设置一些额外的键(例如 tab + shift)。
我该如何设置这样的东西?
目前我的 ~/.vimrc 看起来像:
syntax on
:set tabstop=4
:set cindent
:set autoindent
【问题讨论】:
我通常希望始终使用四个空格来缩进代码。 不幸的是,例如 Makefiles 强制使用制表符作为分隔符。
我现在的想法是将 tab 键设置为四个空格,并为真正的 tab 设置一些额外的键(例如 tab + shift)。
我该如何设置这样的东西?
目前我的 ~/.vimrc 看起来像:
syntax on
:set tabstop=4
:set cindent
:set autoindent
【问题讨论】:
你可能也喜欢这样的东西:
set expandtab
autocmd FileType make setlocal noexpandtab
这将始终将制表符转换为空格,除非您正在编辑 Makefile。
【讨论】:
Ctrl+V Tab 将插入文字标签,即使设置了expandtab。如果您愿意,可以使用:inoremap <s-tab> <c-v><tab> 将其映射到 Shift+Tab。
【讨论】:
你需要使用shiftwidth,例如,
:set shiftwidth=4
:set expandtab
您可能还需要使用此命令将现有制表符转换为空格:
:retab
【讨论】:
:filetype plugin on 应该足以让 tab 键始终在 makefile 中插入真正的制表符,使用文件类型检测。
见:help vimrc-filetype。
【讨论】:
虽然我通常更喜欢将所有内容都转换为空格,但我在 .vimrc 中有一个特定的命令来防止在 makefile 中这样做。首先我激活 expandtab 并设置 shiftwidth,然后我关闭了 makefile 的 expandtab。顺序在这里很重要。
set shiftwidth=4
set expandtab
if has('autocmd')
autocmd FileType make set noexpandtab
endif
我还推荐以下内容,因为它们有些相关并且可能会有所帮助:
set softtabstop=4
set shiftwidth=4
set smarttab
set autoindent
【讨论】: