谁能简单地给我解释一下,根据文件类型改变Vim缩进行为的最简单方法是什么?例如,如果我打开一个Python文件,它应该缩进2个空格,但如果我打开一个Powershell脚本,它应该使用4个空格。
当前回答
编辑~/。Vimrc,并为不同的缩进添加不同的文件类型,例如。我想html/rb缩进2个空间,和js/coffee文件缩进4个空间:
" by default, the indent is 2 spaces.
set shiftwidth=2
set softtabstop=2
set tabstop=2
" for html/rb files, 2 spaces
autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
" for js/coffee/jade files, 4 spaces
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype coffeescript setlocal ts=4 sw=4 sts=0 expandtab
autocmd Filetype jade setlocal ts=4 sw=4 sts=0 expandtab
参考:根据文件类型设置Vim空白参数
其他回答
根据~/.vimrc中的文件后缀放置autocmd命令
autocmd BufRead,BufNewFile *.c,*.h,*.java set noic cin noexpandtab
autocmd BufRead,BufNewFile *.pl syntax on
您要查找的命令可能是ts=和sw=
在Lua(对于Neovim用户)中,您可以使用RUNTIMEPATH/ftplugin/*yourfiletype*。Lua选项如下:
vim.opt_local.shiftwidth = 2
vim.opt_local.tabstop = 2
只是要确保在引号中使用字符串值。例如:
vim.opt_local.foldmethod = 'marker'
今天,你可以尝试editorconfig,也有一个vim插件。这样,您不仅可以在vim中更改缩进大小,而且可以在许多其他编辑器中保持一致的编码风格。
下面是一个简单的编辑配置,如你所见,python文件将有4个缩进空格,而pug模板文件将只有2个。
# 4 space indentation for python files
[*.py]
indent_style = space
indent_size = 4
# 2 space indentation for pug templates
[*.pug]
indent_size = 2
对于那些使用autocmd的人来说,将它们组合在一起是一个最佳实践。如果一个分组与文件类型检测相关,你可能会有这样的东西:
augroup filetype_c
autocmd!
:autocmd FileType c setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab
:autocmd FileType c nnoremap <buffer> <localleader>c I/*<space><esc><s-a><space>*/<esc>
augroup end
分组有助于保持.vimrc的组织性,特别是当一个文件类型有多个与之相关的规则时。在上面的例子中,定义了一个特定于.c文件的注释快捷方式。
对autocmd!告诉vim删除所述分组中以前定义的任何自动命令。如果再次获取.vimrc,这将防止重复定义。更多信息请参见:help augroup。
我通常使用expandtab set,但这对makefile不好。我最近补充道:
:autocmd FileType make set noexpandtab
到。vimrc文件的末尾,它可以识别Makefile, Makefile和*。Mk作为makefile文件,不展开制表符。可以推测,您可以扩展它。
推荐文章
- Vim:在可视模式下快速选择文本块的方法
- 将列表的Python列表写入csv文件
- 是否有vim命令来重新定位一个选项卡?
- MacVim和普通Vim有什么区别?
- 如何修复/转换崇高文本的空间缩进?
- 不能与文件列表一起使用forEach
- python方式检查文件是否存在?
- BAT文件执行后保持CMD打开
- 有什么方法可以在Vim中查看当前映射的键吗?
- 同一行上有多个命令
- 如何将所有文本转换为小写在Vim
- JavaScript错误(Uncaught SyntaxError:意外的输入结束)
- 从包含文件名的路径获取不包含文件名的完整路径
- 使用vimdiff查看所有' git diff '
- 如何在IntelliJ中为整个项目配置“缩短命令行”方法