git - 在 vim 中编辑 git commit 消息时防止自动换行
问题描述
我想做与这个问题相反的事情:
不知何故,git 决定将我的提交消息包装为 72 个字符。我根本不希望它们被包裹……而且我没有做任何事情来启用包裹。
现在,当我已经在编辑提交评论时,我当然可以输入:
:set textwidth&
这将停止包装,但我不想每次都这样做。
附加信息:
- 我正在使用 Devuan GNU/Linux 3 (~= Debian 10)。
:set ft?
说filetype=gitcommit
- 当我刚刚启动 vim 或使用 vim 编辑任何现有文件时,不会发生换行。
解决方案
您正在为 git 提交消息获取这些设置,因为 Vim 识别文件类型 ( gitcommit
) 并为其加载特定于文件类型的设置。
在这种情况下,它来自 file $VIMRUNTIME/ftplugin/gitcommit.vim
,其中包括以下行:
setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
你可以通过向你的主目录添加另一个文件类型插件来覆盖它,这个插件gitcommit
将在 Vim 运行时的插件之后加载。
您可以使用名为的文件来执行此操作~/.vim/after/ftplugin/gitcommit.vim
(假设您使用的是 Vim,如果您使用 NeoVim,则路径的初始部分会有所不同。)该after
目录用于最后加载的插件文件,因此通过放置您的文件在那里,您将确定您的代码将在上述代码之后运行。
在该文件中,您可以添加一个命令来撤消换行的不良影响,例如:
setlocal textwidth&
或者:
setlocal formatoptions-=t formatoptions-=l
这两个设置中的任何一个都将防止在第 72 列自动换行。更改'formatoptions'
而不是重置的优点'textwidth'
是,仅通过更改'formatoptions'
您仍然可以使用命令,例如gq
手动格式化文本块以符合 72 个字符的行宽限制,如果你想这样做。这样你就可以两全其美了。
无论您决定设置两个选项中的哪一个,请确保使用:setlocal
而不是:set
,因为该插件仅针对该缓冲区加载,您应该尝试仅修改该缓冲区上的选项并避免接触全局选项。
推荐阅读
- r - 尝试使用 ggplot 和方程标签绘制不同的线性回归模型
- arrays - 需要帮助 Post data 在数组 django rest 框架中获取数据
- linux - 获取 curl:(3)使用错误/非法格式的 URL
- reactjs - React Draft Wysiwyg - 使用自定义工具栏图标而不是标准的内联工具栏图像
- python - 如果用户输入匹配多个字典然后显示值
- powerbi - 与去年同期相比,运行月总百分比变化的功率 bi
- spring-boot - JPA 查询:当 Hibernate 运行时 EclipseLink 不工作
- javascript - ANTD 表打印使用 ReactToPrint 组件
- python - OrdinalEncoder 的结果与输入数组中的 np.nan 不一致
- sql - 仅显示具有 MOrderNo 的子订单号