我想知道是否可以将 git-gui 中的 tabsize 从 8 个字符更改为 4 个字符。我发现的唯一一件事是core.whitespace = tabsize=4
但这只影响差异。
我问的原因是因为我正在慢慢淘汰制表符的使用,而是使用 4 空格缩进。然而,当在 git-gui 中查看差异时,这可能会产生令人困惑的结果,因为 tabsize 大约为 8 个字符。
我知道:retab
Vim 中的一个简单方法可以解决我的问题,但我经常需要处理具有长期历史记录的大文件,这些文件可能在单独的分支中进行了修改。所以我不能总是简单地转换所有标签。
les*_*ana 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
设置为 setup less 以使用 4 个空格显示选项卡(less 有一个参数-xn
将 tabwidth 设置为n
)。
结果证明配置 git-gui 要困难得多。Git-gui 是用 Tcl/Tk 编写的。我找到了一个 Tcl/Tk选项来配置文本小部件中的标签宽度。我还发现了一行git-gui.sh
看起来正在初始化文本小部件的地方。
这是git-gui.sh
git 版本 1.7.5 中文件的第 3346 行:
catch {$ui_diff configure -tabstyle wordprocessor}
Run Code Online (Sandbox Code Playgroud)
根据 Tcl/Tk 手册,我将其更改为:
catch {$ui_diff configure -tabs "[expr {4 * [font measure $font 0]}]" -tabstyle wordprocessor}
Run Code Online (Sandbox Code Playgroud)
这似乎没有任何效果。我尝试了不同的值-tabs
,它们确实对显示的标签宽度有一些影响,所以它似乎是要修改的正确行。
不幸的是,Tcl/Tk 在字符方面似乎没有制表符宽度的概念,相反,制表符宽度必须以像素或厘米为单位进行设置。
请注意,我在 Tcl/TK 方面没有任何经验,所以也许我只是在这里忽略了一些简单的东西。
无论如何,现在您知道从哪里开始挖掘。如果您有可行的解决方案,请记得在此处报告。祝你好运。
从git-gui-0.20和git 2.4.0 ( commit ) 开始,存在一个配置参数,已添加该参数以配置 git gui 中显示的 tabsize。
将此添加到您的 ~/.gitconfig
[gui]
tabsize = 4
Run Code Online (Sandbox Code Playgroud)
或通过 git-gui 的配置菜单更改它(编辑 -> 选项...)
我详细阐述了lesmana所做的研究。
线
catch {$ui_diff configure -tabstyle wordprocessor}`
Run Code Online (Sandbox Code Playgroud)
lesmana提到的应该替换为以下内容:
catch {$ui_diff configure -tabs "[expr {[get_config gui.tabsize] * [font measure font_diff 0]}] left" -tabstyle wordprocessor}
Run Code Online (Sandbox Code Playgroud)
完成此操作后,可以使用 git 配置文件(又名 gui.tabsize)的 [gui] 部分中的选项“tabsize”来调整选项卡大小。坏消息:
测试:
归档时间: |
|
查看次数: |
2817 次 |
最近记录: |