有没有办法忽略特定的单词?

时间:2019-05-31 07:44:00

标签: git vim gitignore fold

我希望我的git忽略添加到仓库中的vim-foldmarker({{{,}}})。 我知道git具有--ignore-whitespace选项,但是, 有没有办法告诉git忽略特定的单词或字符串? 当然,我希望git跟踪不是“ {{{”或“}}}”

的差异

如果克隆的原始代码是

def foo(bar):
    # do someting
    return "buz"

我的编辑方式

def foo(bar): # {{{ <- this tells vim to fold from here
    # do something
    return "baz" # }}} to here

我希望git diff像这样

-    # do someting
+    # do something
-    return "buz"
*    return "baz"

不是这样

-def foo(bar):
+def foo(bar): # {{{ <- this tells vim to fold from here
-    return "buz"
*    return "baz" # }}} to here

1 个答案:

答案 0 :(得分:1)

Git不允许您使用.gitignore文件来忽略文件的一部分。您可以忽略整个事情,也可以根本不忽略它。

但是,有一种方法可以做您想要的事情,这是一个diff过滤器。如果编辑.git/info/attributes文件(如果文件不存在,则创建该文件),可以输入一行*.py diff=vim,这将使所有Python文件都使用“ vim”差异过滤器。如果您是项目中的唯一人员,也可以在.gitattributes中编写此代码,也可以在任何其他有效的gitattributes文件中编写此代码(有关详细信息,请参见手册页)。

完成此操作后,您可以在.git/config文件或个人.gitconfig文件中指定差异过滤器。指定如何修改文件以呈现差异。例如,您可以编写如下内容:

[diff "vim"]
    textconv = "sed -e 's/ # {{{.*$//' -e 's/ # }}}.*$//'"

这将使sed修改所有差异,以去除空格,注释和折叠标记。您可以对文件执行任意转换,以根据需要修改它们以进行差异输出。