我更愿意在Vim中编写提交消息,但它在Emacs中打开它们.
如何配置Git以始终使用Vim?请注意,我想在全球范围内执行此操作,而不仅仅是针对单个项目.
Tim Pope在他的博客文章中提出了一个特定的git commit消息风格:http: //www.tpope.net/node/106
以下是他推荐的内容的快速摘要:
他的博客文章给出了这些建议的基本原理(为简洁起见,我称之为"50/72格式化"):
git log 不处理包装,因此如果行太长则很难读取.git format-patch --stdout 将提交转换为电子邮件 - 所以如果您的提交已经很好地包装,那么它会很有用.所以,我的问题有两个部分:
我的观点是不推荐50/72款式或其他款式.(关于它,我更喜欢它,但我对其他想法持开放态度.)我只是想了解为什么人们喜欢或反对各种git提交消息样式的理由.(请随意提出尚未提及的要点.)
有没有办法包装git提交注释(通过查看时git log),所以它们不会在行尾被截断?似乎应该有一个非常简单的解决方案,但我找不到一个.
谢谢.
我在我的笔记本电脑上安装了一个新的Arch Linux系统并下载了vim包.
我没有改变.vimrc文件,但语法高亮似乎不适用于我尝试的任何语言(Python,Ruby,CSharp,C ...).
自动格式化(gg,=,G)也会失败.
直到现在,当在其他操作系统(Ubuntu,Fedora)中使用vim(因为我不能说我已经广泛使用它)时,语法突出显示自动出现.这里有什么我想念的吗?
当我在Vim中编辑haskell文件时,我的编辑器会自动将超过80个字符的注释包装到下一行.我希望Vim对python文件(和文本文件)使用相同的行为,但我找不到在我的~/.vim/syntax文件夹或任何地方执行此操作的设置vimrc.
以下是我的.vimrc的相关行:
set wrap
set textwidth=80
Run Code Online (Sandbox Code Playgroud) 我经常vim用来格式化我的git提交消息.我越来越 受欢迎的趋势是提交消息的第一行应限制为50个字符,然后后续行应限制为72个字符.
我已经知道如何根据我的vimrc文件将我的提交换行设置为72个字符:
syntax on
au FileType gitcommit set tw=72
Run Code Online (Sandbox Code Playgroud)
有没有办法让vim第一行自动换行50个字符,然后是72个字符?
一个同样好的答案可以突出显示第50行仅在第一行之后的所有内容,以表明我的标题太长了...
我希望 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) 我注意到,gq当我粘贴一条长行时,这不起作用.例如,使用textwidth=72和formatoptions=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在命令模式下始终有效.以l出formatoptions似乎并没有帮助(它不应该,这不是插入模式).
是的,特别是我正在使用动作命令gq<Right>.formatexpr并且formatprog都未设置.如果重要的话,这是在Debian GNU/Linux,vim版本7.2p284上的gvim中.
This is a long line. A long line. But not wrappable yet. Or yet. Soon.Now putting text in front of the long line. 注释:在最后一段时间后有一个空格,无法显示它,除非此注释在此处.FUN.And some …我想做与这个问题相反的事情:
不知何故,git 决定用 72 个字符包装我的提交消息。我根本不希望它们被包裹……而且我没有做任何事情来启用包裹。
现在,当我已经在编辑提交评论时,我当然可以输入:
:set textwidth&
Run Code Online (Sandbox Code Playgroud)
这将停止包装,但我不想每次都这样做。
附加信息:
:set ft? 说 filetype=gitcommit