如何在GitHub上更改标签大小?

349

当我在 GitHub 上查看文件时,制表符会显示为 8 个空格。

示例:

example

是否可以将此配置更改为 2 或 4 个空格?


8
您还可以查看在GitHub问题#170 pre { tab-size: 4 }中提供的答案。 - KyleMit
2
我认为你应该将接受的答案改为@rofrol关于使用.editorconfig的答案,我认为他的答案包括了当前最佳方法,既可以设置配置以使其他人看到您想要看到的代码,也可以在阅读其他人的代码时更改其外观。 - f1lt3r
10
有人能解释一下为什么默认使用8个空格的逻辑吗?我无法想象任何情况下8个空格看起来不是荒谬的 - 然而这就是GitHub的默认值?为什么会这样呢? - PandaWood
缩进大小可以与制表符大小不同。大多数编辑器仍然可以提供4个缩进大小和8个制表符大小。请参阅此帖子:https://terminatorul.wixsite.com/blog/post/tabs-and-tab-size - Toughy
4
2021年9月:您现在拥有官方GitHub个人资料设置,该设置将适用于所有GitHub页面。请参见我的下面的答案 - VonC
显示剩余3条评论
10个回答

413

121
能够实现这一点是很好的,但如果有一个简单的方法能选择标签页宽度而无需记住URL参数,那将更好。 - aross
110
如果GitHub能够让你将这个设置保存为偏好设置,那将非常方便,这样你就不必每次都重新输入URL了。 - FrustratedWithFormsDesigner
5
对我来说在 Linux 上使用 Chrome 是可行的。 - mortenpi
8
好的解决方案。遗憾的是,它不能用于拉取请求中的差异。 - bbjay
2
在Firefox中,您可以使用trumpio的插件_Request Control_创建规则。我将“ts”查询参数应用于所有对*.github.com的请求。 - jg6
显示剩余9条评论

338

设置仓库默认显示的选项卡大小

如果您的仓库中有.editorconfig,在GitHub上查看代码时会遵循它。

当indent_style = tab和indent_size = 4时,将以4列而不是8列显示选项卡。https://github.com/isaacs/github/issues/170#issuecomment-150489692

示例 .editorconfig 可用于多种扩展,在JetBrains产品中运行良好:

root = true

[*]
end_of_line = lf
insert_final_newline = true

# Matches multiple files with brace expansion notation
[*.{js,jsx,html,sass}]
charset = utf-8
indent_style = tab
indent_size = 4
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

改变您在其他存储库中查看选项卡的方式

在浏览器中安装 Stylus,然后安装 GitHub:更好尺寸的代码选项卡

还有 Google Chrome 扩展程序:


2
看起来 Github 不会为没有名称的文件(.gitconfig 等)尊重 editorconfig 文件。有什么想法是为什么,还是这是一个 bug?例如 https://github.com/rmandvikar/git-setup/blob/tabs/.gitconfig - hIpPy
8
dotfiles 在 GitHub 上似乎不被 [*] 所尊重。我不得不添加另一个条目 [.*] - PotatoFarmer
2
提交时它没有被尊重 :-( - Nikola Mihajlović
1
这个功能从Github中删除了吗?我的一些之前正确的仓库似乎被重置为8个空格。 - Redsandro
4
@rofrol,我想我错了。在代码和差异中,制表符大小是正确的,但在“README.md”代码片段中不起作用。这是一个新的发现;我不知道“README.md”代码片段是否曾经使用过除8个空格之外的制表符大小。 - Redsandro
显示剩余6条评论

99

13
这个回答应该排得更靠前,可惜过时的回答得到了更多的投票。我最初看到排名前两位的回答(根据得票数),认为这不可能是用户特定设置,然后放弃了。后来我在界面上偶然发现了这个设置。 - typesanitizer
这并不替代.editorconfig。不同的文件格式需要不同的缩进。这就是重点。 - Ryan
@Ryan 我同意。这不是一个完整的解决方案。 - VonC
这似乎没有任何作用,是基于会话的吗?编辑:哦,它在编辑器视图上有效,我原以为它可以在自述文件的代码示例中起作用。 - undefined

72

使用浏览器扩展程序实际上是可以做到的。安装Stylish(在FirefoxChrome中),然后安装此用户样式:“GitHub: better-sized tabs in code”。

可能对某些语言无效。例如,我正在查看一个JavaScript文件,但没有注意到任何更改。因此,我删除了作者编写的样式并使用了以下行:

.tab-size {
  -webkit-tab-size: 4 !important;
     -moz-tab-size: 4 !important;
       -o-tab-size: 4 !important;
          tab-size: 4 !important;
}

它在Chrome上运行良好(屏幕截图)。

从屏幕截图中可以看出,我还启用了宽屏模式,并将颜色方案更改为Solarized。因此,通过Chrome的Stylish扩展程序在GitHub页面上运行了三种用户样式。希望这能帮助到某些人。


19
我写了这个用户样式。我很高兴你觉得它有用。我已经修复了它并在Chrome中进行了测试,现在可以不需要您的修改就能正常工作。 - Rory O'Kane
2
你可能也会喜欢我的用户样式 “All code has tab size 4”,它可以改变所有网站上的<code>元素的制表符大小。 - Rory O'Kane
1
Github会用8个&nbsp;替换每个\t。糟糕。 - Rudie
2
是的,他们以前没有这样做,我不知道为什么现在这样做了:( 我猜解决办法可以是有人编写一个脚本,用两个连续的 替换四个连续的 或其他什么。但我想那必须是一个“用户脚本”。 - aledujke
1
我们的 GitHub Dark Stylish 用户样式允许您设置选项卡大小,并且正在积极维护。 - Mottie
显示剩余8条评论

30

更新

是的。正如 mortenpi 所述,这可以通过一个额外的查询参数来完成。有关详细信息,请参见 他的回答

原始回答

能否将此配置更改为2或4个空格?

不行。它仅作为编辑功能的一部分提供给Ace编辑器,并且更改不会被持久保存。

这篇博客文章提供了一些关于嵌入式IDE的信息。

但是,只要你知道你想要查看的blob(文件)的url,你就可以通过将blob段改为edit段并使用下拉列表选择你喜欢的制表符大小轻松切换到编辑模式。

tabSize


22
好主意,但问题在于一旦你进入编辑模式,你也会分叉所述的存档。50次或更多只读编辑后可能会有点过度。 - tomByrer
2
同意。但这可能是一个开始贡献的好动力 ;) - nulltoken
14
正如 @chrisdembia 所提到的,这已经不再正确了。Github 现在允许您通过将值作为查询参数传递来更改选项卡大小(例如,?ts=4)。 - dule
社区是否有办法覆盖所选答案? - chrisdembia
1
@chrisdembia 感谢提醒 ;) 已更新答案并指向morenti的答案。 - nulltoken

10

如果这个项目是你自己的,请在项目根目录中创建一个名为“.editorconfig”的文件,并将以下内容添加到该文件中。

[*]
indent_style = tab
indent_size = 4

这将会使GitHub在项目中呈现4个字符宽的制表符。
这是一个EditorConfig文件,其已被正式规定,支持多种编辑器,并且还支持更广泛的编辑器配置,例如指定所有 .html 文件为 UTF-8 编码。
如果该项目不属于您,请考虑打开问题请求作者指定他们想要的缩进样式。

1
tab_width = 4 更正确地指定制表符的渲染宽度,而 indent_size = 4 则指定编辑器中默认的缩进宽度。 - Ryan
@Ryan 我同意,但请注意,如果1个缩进等于1个制表符,请设置indent_sizetab_width默认为indent_size,只有在您想要例如1个缩进等于2个制表符或在其他地方使用制表符的情况下才需要打破它们之间的联系并使用空格缩进。 - twhb
啊,对了!知道这个很好。 - Ryan

0

如果您对用户脚本感兴趣,这对我非常有用:

// ==UserScript==
// @name         GitHub Tabs
// @namespace    http://foldoc.org/
// @version      1
// @description  Set sensible tabs on GitHub
// @author       Denis Howe
// @match        https://github.com/*
// ==/UserScript==

document.querySelectorAll('table').forEach(t => { t.dataset.tabSize = 2 });

我本来更喜欢另一种方法,但这个似乎工作起来比较随机:如果数据在用户脚本运行之前没有加载(例如文件列表然后单击打开文件),它就不起作用。 - Ten
干得好,但是在评论框中不适用于代码块。 - 沙漠之子

-4

我这样做是为了修复它们 http://valjok.blogspot.com/2014/07/indentation-correction-for-exposing.html

另一个选项是在嵌入您的Gist时,用所需数量的空格替换所有制表符

<div id="willReplaceTabs">
 <script src="https://gist.github.com/valtih1978/99d8b320e59fcde634ad/cf1b512b79ca4182f619ed939755826c7f403c6f.js"></script>

 <script language="javascript">
  var spaces = "  "
  willReplaceTabs.innerHTML = willReplaceTabs.innerHTML.replace(/\t/g, spaces)
 </script>
</div>

-8
如果您正在处理的项目允许,将编辑器设置为将制表符视为空格可以解决该问题。
例如,在Visual Studio Code中,配置如下:
{
    "editor.tabSize": 2,
    "editor.insertSpaces": true
}

在Sublime中,它是:
{
    "tab_size": 2,
    "translate_tabs_to_spaces": true
}

直到最近我一直坚持使用非空格制表符。在切换后,它解决了Github渲染的奇怪问题,并且我没有注意到我的工作流程中有任何显著的缺点。


-35

最好的解决方案是,如果可能的话,说服您正在查看的源代码维护者将所有制表符替换为正确数量的空格。

在当今的代码中使用制表符存在问题,因为您经常在网络上看到它,而“每个制表符有多少个空格”这个决定取决于它被显示在哪里。


7
这是正确的答案,不应该被踩。有太多软件不允许你改变制表符宽度,以至于“制表符可配置”只是一厢情愿的想法。如果你缩进的距离不是你喜欢的制表符宽度的倍数,那么你现在就有了制表符和空格的混合体,而调整制表符大小甚至也无法解决这个问题。 - zwol
9
阅读维基百科关于8个空格制表符的来源的文章。“尽管五个字符等于半英寸,而当时的典型段落缩进是五个字符,但常见的水平制表符大小为八个字符,因为作为二的幂,在有限的数字电子设备中更容易用二进制进行计算。” 你的回答使用循环论证(即标准为八个字符,因为这就是标准),来结束问题。提问者对这个标准不满意,并且很少有理由去满意它。 我的翻译如下:请阅读维基百科关于8个空格制表符起源的文章。该文章指出,尽管当时的典型段落缩进是5个字符,而5个字符等于半英寸,但是为了在有限的数字电子设备上更容易地进行二进制计算,人们发展出了一个通用的水平制表符大小为8个字符的标准。但这个标准并没有解决问题,导致提问者不满意。 - Adam
4
可以,你可以使用 ?ts=4 来实现。 - Ben
9
我更喜欢使用制表符而不是空格,因为在我将光标移动到空格间距时,它可以使我的编辑速度提高4至8倍。 - user1985657
5
除了支付开发者的人,还有谁呢?你的大脑IDE是否使用逐行移动功能跳过了下面这句话?我明确表示项目强制约定优先于个人偏好。|| "为什么你要这样做呢?所有编辑器都有逐词/字段/行移动的功能吧?"是的,你在暗示使用编辑器的功能来浏览代码比简单按一个键遍历整个列更容易。此外,并非所有编辑器都具有这些功能,有些甚至工作方式不同。停止认为整个世界都在使用Sublime。 - user458541
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接