相关疑难解决方法(0)

如何让Git使用我选择的编辑器进行提交?

我更愿意在Vim中编写提交消息,但它在Emacs中打开它们.

如何配置Git以始终使用Vim?请注意,我想在全球范围内执行此操作,而不仅仅是针对单个项目.

git vim emacs commit-message editor

2362
推荐指数
17
解决办法
86万
查看次数

Git Commit Messages:50/72格式化

Tim Pope在他的博客文章中提出了一个特定的git commit消息风格:http: //www.tpope.net/node/106

以下是他推荐的内容的快速摘要:

  • 第一行是50个字符或更少
  • 然后一个空白行
  • 剩余文本应包含72个字符

他的博客文章给出了这些建议的基本原理(为简洁起见,我称之为"50/72格式化"):

  • 在实践中,一些工具将第一行视为主题行,将第二段视为主体(类似于电子邮件)
  • git log 不处理包装,因此如果行太长则很难读取.
  • git format-patch --stdout 将提交转换为电子邮件 - 所以如果您的提交已经很好地包装,那么它会很有用.
  • 我想补充一点,我认为蒂姆会同意:总结你的提交的行为在任何版本控制系统中都是一个很好的做法.它可以帮助其他人(或稍后的人)更快地找到相关提交.

所以,我的问题有两个部分:

  • git的"思想领袖"或"有经验的用户"有什么(大致)拥抱50/72的格式化风格?我问这个是因为有时新用户不知道或不关心社区实践.
  • 对于那些不使用此格式的人,是否有使用不同格式样式的原因?(请注意,我正在寻找关于优点的论据,而不是"我从未听说过"或"我不在乎.")
  • 从经验上讲,git存储库中有多少百分比采用这种风格?(如果有人想对GitHub存储库进行分析......提示,提示.)

我的观点是不推荐50/72款式或其他款式.(关于它,我更喜欢它,但我对其他想法持开放态度.)我只是想了解为什么人们喜欢或反对各种git提交消息样式的理由.(请随意提出尚未提及的要点.)

git

288
推荐指数
5
解决办法
9万
查看次数

如何包装git commit注释?

有没有办法包装git提交注释(通过查看时git log),所以它们不会在行尾被截断?似乎应该有一个非常简单的解决方案,但我找不到一个.

谢谢.

git

69
推荐指数
6
解决办法
3万
查看次数

Vim语法突出显示不起作用

我在我的笔记本电脑上安装了一个新的Arch Linux系统并下载了vim包.

我没有改变.vimrc文件,但语法高亮似乎不适用于我尝试的任何语言(Python,Ruby,CSharp,C ...).

自动格式化(gg,=,G)也会失败.

直到现在,当在其他操作系统(Ubuntu,Fedora)中使用vim(因为我不能说我已经广泛使用它)时,语法突出显示自动出现.这里有什么我想念的吗?

vim syntax-highlighting vim-syntax-highlighting

40
推荐指数
6
解决办法
6万
查看次数

在VIM中自动换行

当我在Vim中编辑haskell文件时,我的编辑器会自动将超过80个字符的注释包装到下一行.我希望Vim对python文件(和文本文件)使用相同的行为,但我找不到在我的~/.vim/syntax文件夹或任何地方执行此操作的设置vimrc.

以下是我的.vimrc的相关行:

set wrap
set textwidth=80
Run Code Online (Sandbox Code Playgroud)

vim word-wrap

17
推荐指数
2
解决办法
2万
查看次数

将git commit消息的主题行限制为50个字符

我经常vim用来格式化我的git提交消息.我越来越 受欢迎的趋势是提交消息的第一行应限制为50个字符,然后后续行应限制为72个字符.

我已经知道如何根据我的vimrc文件将我的提交换行设置为72个字符:

syntax on
au FileType gitcommit set tw=72
Run Code Online (Sandbox Code Playgroud)

有没有办法让vim第一行自动换行50个字符,然后是72个字符?

一个同样好的答案可以突出显示第50行在第一行之后的所有内容,以表明我的标题太长了...

git vim

6
推荐指数
1
解决办法
950
查看次数

在 vim 中设置 textwidth 而不覆盖特定的文件类型

我希望 vim 中的 textwidth 默认为 80,但如果特定文件类型有自己的文本宽度(特别是 tw=72 的 gitcommit),我希望 vim 遵守该宽度。

在我的 .vimrc 中,我有一行:

set tw=80
Run Code Online (Sandbox Code Playgroud)

我也试过

setlocal tw=80
Run Code Online (Sandbox Code Playgroud)

然而,这似乎覆盖了 72 的 gitcommit 宽度。

如果我删除该行,则 git commit 可以正常工作(在 72 处换行),但文本文件(例如)不会自动换行。

如果没有指定其他内容,是否可以将 vim 换行到 80,否则请遵循特定的文件类型说明?

顺便说一句,我认为这直到最近才有效。我曾尝试从我的 .virmrc 中删除所有其他内容,但设置 tw=80,但这没有任何区别。

编辑:如果我打开一个 git commit 消息编辑器,然后运行

:verbose set tw?

vim 显示:

   textwidth=80
        Last set from ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

vim word-wrap

5
推荐指数
1
解决办法
2357
查看次数

在Vim包裹长行?

我注意到,gq当我粘贴一条长行时,这不起作用.例如,使用textwidth=72formatoptions=tcroqbnl,gq拒绝包装它(在插入模式下,我粘贴了整个标签内容,然后退出插入模式ESC):

<label for="contact_reason_1">To get assistance with or to confirm a tire replacement recommendation</label>
Run Code Online (Sandbox Code Playgroud)

如果我在(在"to"之后)添加换行符,那么它将换行.有趣的是,如果我一起加入这条线,它会很高兴再次包裹它.所以VIM似乎在某种程度上记得"哦,这是一个粘贴,不要包装它".

如何关闭该功能?我希望gq在命令模式下始终有效.以lformatoptions似乎并没有帮助(它不应该,这不是插入模式).


澄清

是的,特别是我正在使用动作命令gq<Right>.formatexpr并且formatprog都未设置.如果重要的话,这是在Debian GNU/Linux,vim版本7.2p284上的gvim中.

重现步骤

  1. 在打开的文件上弹出gvim.
  2. i进入插入模式,然后键入This is a long line. A long line. But not wrappable yet. Or yet. Soon.
  3. ESC,然后I.键入Now putting text in front of the long line. 注释:在最后一段时间后有一个空格,无法显示它,除非此注释在此处.FUN.
  4. ESC,然后A.键入And some …

vim paste word-wrap

3
推荐指数
1
解决办法
4777
查看次数

在vim中编辑git提交消息时防止自动换行

我想做与这个问题相反的事情:

在 Vim 中自动包装很长的 Git 提交消息

不知何故,git 决定用 72 个字符包装我的提交消息。我根本不希望它们被包裹……而且我没有做任何事情来启用包裹。

现在,当我已经在编辑提交评论时,我当然可以输入:

:set textwidth&
Run Code Online (Sandbox Code Playgroud)

这将停止包装,但我不想每次都这样做。

附加信息:

  • 我正在使用 Devuan GNU/Linux 3 (~= Debian 10)。
  • :set ft?filetype=gitcommit
  • 当我刚启动 vim 或使用 vim 编辑任何现有文件时,不会发生换行。

git vim word-wrap text-width

1
推荐指数
1
解决办法
634
查看次数