在git-gui中更改tabsize


15

我想知道是否可以将git-gui中的tabsize从8个字符更改为4个。我发现的唯一内容是,core.whitespace = tabsize=4但这仅影响diff。

我问的原因是因为我正在逐步淘汰制表符的使用,而是使用4空格缩进。然而,当在git-gui中查看差异时,这会产生令人困惑的结果,因为tabsize大约为8个字符。

我知道:retabVim中的一个简单问题可以解决我的问题,但是我经常需要处理具有长期历史的大文件,这些大文件可能会在单独的分支中进行修改。因此,我不能总是简单地转换所有选项卡。

Answers:


5

git-gui-0.20git 2.4.0commit)开始,存在一个配置参数,已添加该参数以配置git gui中显示的tabsize。

将此添加到您的〜/ .gitconfig

[gui]
    tabsize = 4

或通过git-gui的配置菜单进行更改(编辑->选项...)


谢谢。我更新了Git(版本为1.8:-O),看到了这个选项。我仍然仍然时不时要处理制表符和空格的混合匹配,所以这很棒。
Htbaa

10

我做了一些研究。

该配置core.whitespace与选项卡的显示方式无关。它仅用于git来识别与制表符相关的空白错误。例如:当indent-with-non-tab启用时,并且core.whitespace设置为tabwidth=4,并且一行使用4个或更多空格缩进,则git将报告错误。

对于git,除了与制表符相关的空白错误检测功能外,制表符是与其他任何字符一样的字符。它将进行比较,并将其转储到用于显示字符的任何工具中。这意味着,要配置显示的选项卡宽度,您必须配置git的“前端”。在这种情况下git diff将为“少”(unix工具为“少”)。在这种情况下git gui,将是git-gui本身。

少配置很容易。您可以将git配置core.pager设置为更少设置,以使用4个空格显示标签(less具有-xn将tabwidth设置为的参数n)。

事实证明,配置git-gui非常困难。Git-gui是用Tcl / Tk编写的。我找到了一个Tcl / Tk 选项来配置文本小部件中的选项卡宽度。我还发现其中一行git-gui.sh似乎在初始化文本小部件。

这是git-gui.shgit版本1.7.5中文件的第3346行:

catch {$ui_diff configure -tabstyle wordprocessor}

根据Tcl / Tk手册,我将其更改为:

catch {$ui_diff configure -tabs "[expr {4 * [font measure $font 0]}]" -tabstyle wordprocessor}

这似乎没有任何作用。我尝试使用不同的值-tabs,它们确实对显示的选项卡宽度产生了一些影响,因此这似乎是修改的正确行。

不幸的是,Tcl / Tk在字符方面似乎没有制表符宽度的概念,相反,制表符宽度必须以像素或厘米为单位设置。

请注意,我没有任何Tcl / TK经验,所以也许我只是在这里忽略了一些简单的知识。

无论如何,现在您知道从哪里开始挖掘了。如果您有可行的解决方案,请记住在此处报告。祝好运。


感谢您的研究。我将为此预留一些时间来尝试一下。赏金是您应得的。如果何时以及如果我知道该怎么做,我一定会在这里报告。
2011年

@Htbaa:我认为您必须单击“奖励赏金”按钮才能授予赏金。接受答案不会奖励赏金。
lesmana 2011年

谢谢。做完了!我很确定赏金已经发放了。
2011年

5

我详细阐述了莱斯曼纳所做的研究

线

catch {$ui_diff configure -tabstyle wordprocessor}`

lesmana提到的应替换为以下内容:

catch {$ui_diff configure -tabs "[expr {[get_config gui.tabsize] * [font measure font_diff 0]}] left" -tabstyle wordprocessor}

完成此操作后,您可以使用git配置文件[aka]部分[aka]中的“ tabsize”选项来调整标签大小。坏消息:

  1. 最后一个非空白字符之后的一些制表符变成简单的空格。这看起来像tcl中的错误。
  2. 更改字体大小后,必须重新启动git-gui才能获取正确的标签。谁知道如何解决?

经过测试:

  • git-gui版本0.13.0.8.g8f85
  • git版本1.7.4.1
  • tcl版本8.4.16-2(Ubuntu 11.04 i386软件包)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.