vim - 如何使用不同的制表符/空格设置打开单个文件或项目

标签 vim macvim

我在项目中使用 (Mac)Vim,设置为使用 2 个制表符空格,甚至有一个脚本可以在保存时将所有制表符转换为 2 个空格。

当我与其他开发人员合作时,有时他们使用制表符而不是空格,我正在寻找一种快速方法来切换两种不同的 vim 配置,希望在命令行上切换它们,就像这样

macvim --oh-no-not-tabs-again .

这方面的最佳实践是什么?

最佳答案

您可以在每个目录的基础上触发自动命令,这样您就可以自动配置任何您想要的内容,而无需使用热键。这是我想到的:

" set up global defaults, these are mine
set tabstop=4
set softtabstop=4
set shiftwidth=4
set smarttab
set expandtab
set autoindent
set smartindent

" override tab settings on a per-directory basis
function! SetStandardTabs()
  set noexpandtab
  set tabstop=8
  set softtabstop=4
endfunction

augroup PerDirectoryTabs
  autocmd!
  autocmd BufRead,BufEnter,BufNewFile /path/to/csharp/files/* call SetStandardTabs()
augroup END

这会将 vim 配置为自动判断您何时位于/path/to/csharp/files 的子树中,并按照您想要的方式设置缓冲区局部变量。将其放入您的 .vimrc 中,然后就可以开始了。

编辑 下面是一些要放入 .vimrc 中的代码,用于在树中搜索最近的“本地”.vimrc 并获取(加载)它。谨慎使用!不要设置全局变量或做任何“有趣”的事情,你会得到难以诊断的行为。我还没有对其进行详尽的测试。它可能会吃掉你的 child 。您已被警告!

" per-subtree .vimrc
function! FindAndSourceLocalVimrc()
  if exists('g:inFindLocalVimrc')
    return
  endif
  let g:inFindLocalVimrc=1

  let v = findfile('.vimrc', '.;')
  if exists('v')
    let v = fnamemodify(v, ':p')
    if v != $MYVIMRC
      exe "source " . v
    endif
  endif

  unlet g:inFindLocalVimrc
endfunction

call FindAndSourceLocalVimrc()

我确信 10 年后我会找到一些已经存在的内置方法来在一行中完成此操作。

关于vim - 如何使用不同的制表符/空格设置打开单个文件或项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789439/

相关文章:

vim: smartindent (或 cindent) 被激活但不工作

vim - Vim 中的中欧字符并打印(PDF)它们

macvim - 如何在macvim中更改默认缩进?

vim - 在vim中折叠(展开和折叠)xml标签(xml解析)

vim - 突出显示包含搜索词的行

linux - vim 远程编辑 : ftpplugin or remote vim over ssh

vim - 在 MacVim 中禁用铃声

vim - 有没有办法将 Control + 6 或 Shift + Control + ^ 映射到领导键?

Vim:配色方案在终端中无法正确显示

vim - NeoComplCache 让我有一个额外的返回键来打开一个新行