在Visual Studio和VIM

时间:2015-06-05 14:22:56

标签: c++ visual-studio-2010 visual-studio vim coding-style

我与一个中等规模的开发人员团队合作,其中一半是Linux开发人员在Ubuntu上使用VIM,在OSX上使用MacVIM,另一半是使用Visual Studio 2010或更高版本的Windows开发人员。 / p>

过去浪费了相当多的时间,因为SVN操作因混合行尾而导致失败,或者由于硬标签与空格混合而导致代码审查发生变化(有时候是不同的长度,即:4个空格对2个空格对比8个空格等),我想结束它。

计划是调整我们设计的通用编码风格,几乎与Linux Kernel coding style相同。对于所有开发人员,我们可以要求他们通过Linux内核开发人员使用的checkpatch.pl script运行他们的代码,但我们的代码包括 C,C ++和C#,因此我们需要概括规则检查器脚本超越ANSI C.

是否有通用的方法来实现VIM的规则集,而另一个是Visual Studio的规则集?我们想要生成一个检查整个文件的脚本,这些文件可以挂钩到我们的版本控制系统中,以便在提交完成之前在代码上运行,也可以作为运行时脚本强制执行样式作为编码器类型?

谢谢。

2 个答案:

答案 0 :(得分:4)

EditorConfig似乎在VimVisual Studioa lot of other editors and IDEs中完全符合您的要求。

答案 1 :(得分:3)

运行时“脚本”是最好的第一道防线。在这种情况下,将有各种Vim和Visual Studio设置来帮助强制执行您的代码样式。仅这一点就会遇到很多问题。请记住,这不会捕捉所有内容,但会鼓励您想要的编码风格。

我在Linux& Visual Studio在一个团队之前(有时是我自己)。整个Tabs / Spaces问题让我疯狂,因为批发的线路组要么转移要么不够。为了解决这个问题,我最终在Vim中使用了这三个设置(也在Visual Studio中设置了类似的值),从根本上捕获了一类问题。

<强>的Vim

set expandtab
set shiftwidth=4  " Mainly for if/for/while/general {} block indentation.  4 spaces.
set softtabstop=-1 " Allows us to use the Tab key and have it act like shiftwidth.

Visual Studio

  • 按Tab键时插入空格。
  • 在代码块内的缩进上移动4个空格

他们的关键是摆脱Tab字符,或者至少让两个系统都使用相同的设置(即使用具有相同值的Tab或替换为Tabs的SPACE)

需要注意的事项:

  • 有人将文件从一个操作系统复制到另一个操作系统,然后在该计算机上将文件检入SVN。例如,SVN会盲目地从UNIX系统提交DOS行结束文件。您只想在同一系统上签出/提交文件 。否则,在同一操作系统上检出/编辑/提交文件应该没有问题,因为SVN可以在结账时转换行结尾。您可以通过将文件加载到Vim然后通过键入“:set fileformat = dos”(如果要更改为Windows样式)将行结尾转换为所需的特定操作系统来“修复”此问题,“:set fileformat = unix“(对于unix样式),或者最后”:set fileformat = mac“对于Mac。

就代码风格而言,正如您可能已经知道的那样,Vim和Visual Studio都提供了很多灵活性。虽然我无法为您提供Vim的具体设置,但要查看的选项是

autoindent
cindent
cinoptions  (implied from cindent)
cinkeys     (implied from cindent)
comments    (default is probably fine, but here for thoroughness)

所以,你会想要

set autoindent
编辑C或C ++文件时,应自动设置

和cindent。 cinoptions和cinkeys的默认设置对我来说没问题,但我在过去与其他团队合作时已经调整了它们。

不要忘记在选定的行范围内使用'='命令来重新格式化代码!这非常方便!

我回避完全自动的SVN后端方法,因为它可能需要比预期更长的时间,并且当它搞砸了,它可能需要比你预期更多的时间。毕竟,你真的只想提高效率,对吗?

前面的纪律是关键!