如何让 git 使用我选择的编辑器来编辑提交消息?

教程介绍了如何全局配置Git以使用vim或其他编辑器(如Sublime Text、Visual Studio Code、Notepad++等)作为提交消息的编辑工具。涉及设置`core.editor`、`GIT_EDITOR`环境变量,以及在不同操作系统上的实现方法。还提到了一些编辑器需要特定参数(如`--wait`)以确保与Git的兼容性。

问:

如何全局配置 git 以使用特定编辑器(例如 vim)来提交消息?

答1:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

设置 Git 的默认编辑器

选一个:

在你的 Git 配置中设置 core.editor: git config --global core.editor “vim”

设置 GIT_EDITOR 环境变量:export GIT_EDITOR=vim

为所有程序设置默认编辑器

设置标准化的 VISUAL 和 EDITOR 环境变量*:

export VISUAL=vim
export EDITOR="$VISUAL"

注意: 不一定需要同时设置两者,但某些程序可能不会使用更正确的 VISUAL。请参阅VISUAL vs. EDITOR。

修复兼容性问题

一些编辑器需要一个 --wait 标志,否则他们会打开一个空白页面。例如:

Sublime Text(如果设置正确;或使用可执行文件的完整路径代替 subl):export VISUAL=“subl --wait”

VS Code(添加 shell 命令后):export VISUAL=“code --wait”

EDITOR 环境变量的优点是许多其他程序也会尊重它。

请注意,git config --global 将写入您的个人(每用户)git 配置文件。在 Unices 上是 ~/.gitconfig。因此,这将为您的所有存储库配置它。

您可以通过尝试修改最后一条提交消息来测试您是否成功更改了它。 git commit --amend

如果您在 Windows 中执行选项 #1 并且在编辑器的路径中有空格(例如,如果它在 Program Files 下),那么在双引号内敲击单引号。例如“'C:/Program Files (x86)/Whatever/App.exe'”——对某些人来说很明显,但对我来说不是!

@Abramodj -w 不是必需的; -w {scriptout} 保存您在编辑时键入的所有字符,以便稍后重播。或许您将它与 -f 混淆了,后者在调用 GUI 版本的 Vim 时是必要的。也就是说,如果您使用 mvim,那么您指定的编辑器应该是 mvim -f 而不是 mvim。

答2:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

跑:

git config --global core.editor "vim"

从 man git-commit:

环境和配置变量 用于编辑提交日志消息的编辑器将从 GIT_EDITOR 环境变量、core.editor 配置变量、VISUAL 环境变量或 EDITOR 环境变量(按此顺序)中选择。

顺便说一句,上述情况适用于 CVS 和 SVN,我猜还有其他版本控制。

@armandino:是的,其他人可能会使用 VISUAL 或 EDITOR,但他们肯定不会使用 GIT_EDITOR 或 core.editor。

感谢您澄清马克。我的意思是 EDITOR 变量。我相信 GIT_EDITOR (如果定义)只是覆盖它。

是的 - svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2 所以理论上,如果我同时使用 svn 和 git,设置 $VISUAL 或 $EDITOR 将是默认覆盖两者的最佳解决方案!

为了完整起见, core.editor 表示文件中的 [core] editor = ...

答3:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

在 Ubuntu 和 Debian(感谢@MichielB)上,也可以通过运行以下命令更改默认编辑器:

sudo update-alternatives --config editor

这将提示以下内容:

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
* 3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

在 Debian 上也可以,谢谢!它默认为 pico - 啊。

当然它适用于 Debian;这是 Debian 的一个特性,就像大多数东西(哦,有争议!)一样,Ubuntu 只是继承了它。 Debian 的 alternatives 系统是管理受支持程序类型的默认值的一种更简单的方法。供参考:debian-administration.org/article/91/…

它有效,而 GIT_EDITOR 和 EDITOR 无效 --ubuntu

@haziz:在我的系统上,列出的选项之一是 Emacs(其他包括各种版本的 Vim,以及 nano 和 ed)。

@haziz update-alternatives 将显示所有已安装的编辑器。 Koen 只是没有安装 Emacs。

答4:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

在 Windows 7 中,在添加“Sublime”编辑器时它仍然给我一个错误:

由于提交消息为空而中止提交。

Sublime 无法保持焦点。

为了解决这个问题,我在 c:/users/username/ 文件夹中打开了 .gitconfig 文件,并在单引号之外添加了以下带有 --wait 选项的行。

[core]
      editor = 'F:/Program Files/Sublime Text 2/sublime_text.exe' --wait

希望它对面临与 Sublime 类似问题的人有所帮助。

好的!谢谢Anmol,我遇到了这个问题,它提交了一条空消息。

为什么要使用 sublime 进行 git 提交?

git commit 的任何编辑器都将主要用于添加多行注释,而 Sublime 是许多开发人员出于各种原因而选择的程序员。人们通常倾向于在大部分编码和其他工作中使用一个编辑器。 Sublime 只是个人选择,它可以是任何编辑器。

您可以使用此命令 git config --global core.editor "'C:/Program Files/Sublime Text 3/subl.exe' --wait" 而不是手动编辑 gitconfig

答5:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

在 Windows 7 中,将编辑器设置为 Notepad++

打开任何文本编辑器。

打开这个文件:C:\Users\YOUR_USERNAME.gitconfig

将此部分添加到底部:

对于 64 位 Notepad++ 使用:

[core]
    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar

对于 32 位 Notepad++ 使用:

[core]
    editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar

保存并关闭文件。

当您使用 git 提交时,只需编写 git commit 并按 Enter。它将弹出打开记事本++。

在文件顶部写下你的提交信息,然后保存并关闭文件。完毕!

终于有人会写简单了!谢谢。但是你应该提到,在记事本的路径中必须使用'/'或双反斜杠'\\',否则git会抱怨......

您可能需要至少将 -multiInst 作为参数添加到 notepad++,可能还需要添加 -notabbar。如果 git 似乎不知道您何时完成编辑文件并且永远等待或根本不等待,请执行此操作。

要在命令行上设置配置,我需要在单引号内使用双引号,例如 >git config --global core.editor '"C:/Program Files (x86)/Notepad++/notepad++.exe"'

仍然为我打开普通的记事本

要添加 Notepadd++ 参数,我必须这样做:editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar - 即分隔单引号之外的参数

答6:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

要将 Visual Studio Code (vscode) 设为默认 git 编辑器:

git config --global core.editor "code --wait"

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

答7:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

如果您使用命令行与设计师合作,那么 Pico,并且不知道捷径;)

git config --global core.editor "pico"

或者

export VISUAL=pico
export EDITOR=pico

答8:

huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。

Atom 作为你的 git 编辑器

git config --global core.editor "atom --wait"

Atom 需要配置为从命令行运行才能使上述工作正常运行: OS X:从 Atom 安装 shell 命令:菜单栏 > Atom > 安装 Shell 命令 Windows:无需任何操作 - atom 配置为从命令行运行默认

VSCode 用户:git config --global core.editor "code --wait"

答9:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

在 Mac OSX 10 中将 Sublime Text 2 设置为 Git 提交编辑器

运行此命令:

$ git config --global core.editor "/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl"

要不就:

$ git config --global core.editor "subl -w"

不知何故,它没有将文本传递给 git。我收到“由于提交消息为空而中止提交。”错误。

我已经使用第一个命令来设置 SL。 cmd + S 然后 cmd +W 关闭编辑器

Visual Studio Code 也支持 -w 参数。例如。 $ git config --global core.editor "code -w"。整洁的东西

此处的替代答案:stackoverflow.com/a/48212377/4561887,以 Linux 为例。

答10:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

要使 vim 在 ubuntu 20:04 上成为 git 的默认编辑器,请运行以下命令:

git config --global core.editor vim

答11:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

这为遇到此问题的人提供了一个答案,他们可能想要链接除 vim 之外的编辑器。

当编辑器更新时,Github 的链接资源可能会保持最新,即使关于 SO(包括这个)的答案不是。

Associating Text Editors with git

Github 的帖子准确地显示了为各种编辑器在命令行中输入的内容,包括特定于每个编辑器的选项/标志,以使其与 git 一起工作。

记事本++: git config --global core.editor “‘C:/Program Files (x86)/Notepad++/notepad++.exe’ -multiInst -notabbar -nosession -noPlugin”

崇高文本: git config --global core.editor “‘c:/Program Files/sublime text 3/subl.exe’ -w”

原子: git config --global core.editor “atom --wait”

上面的命令假定您的编辑器已安装在 Windows 机器的默认目录中。

这些命令基本上将双引号之间的文本添加到主目录中的 .gitconfig。 在 Windows 机器上,主目录可能是 C:\Users\your-user-name,其中 your-user-name 是您的登录名。来自在命令行中,您可以通过输入 cd ~ 来访问此目录。

例如,上面的命令将在 [core] 部分下添加以下行,如下所示: [core] editor = ‘C:/Program Files/sublime text 3/subl.exe’ -w

如果您有不同的编辑器,只需使用上述任一方法替换为您的编辑器的路径。 (并希望最佳使用不需要标志。)

谢谢,我正在为“vim”启动 Git 的“内部”vim 实例(没有我的偏好等)而苦苦挣扎。提供我的实例的完整路径解决了这个问题!

原文链接:https://www.huntsbot.com/qa/eRqV/how-do-i-make-git-use-the-editor-of-my-choice-for-editing-commit-messages?lang=zh_CN&from=csdn

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

<think> 首先,用户的问题是关于理解一个特定的正则表达式:/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$。我需要解释这个正则表达式的含义。 回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 - 最后,生成相关问题。 用户提供了三个引用: - 引用[1]:关于常见正则表达式,如正浮点数。 - 引用[2]:包含各种正则表达式的例子,如字母数字下划线字符串、整数、浮点数、中文字符、身份证号等。 - 引用[3]:关于正则表达式的简化建议。 但用户说这些引用仅供参考,我应该基于用户的问题来回答。用户的问题是解释正则表达式/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$的含义。 所以,我需要解析这个正则表达式。 分解正则表达式- /^:表示字符串的开始。 - (?=.*[A-Z]):这是一个正向先行断言(positive lookahead)。意思是:字符串中必须包含至少一个大写字母(A-Z)。 - (?=.*[a-z]):另一个正向先行断言,表示字符串中必须包含至少一个小写字母(a-z)。 - (?=.*[0-9]):另一个正向先行断言,表示字符串中必须包含至少一个数字(0-9)。 - .{8,}:表示任意字符(除换行符外)至少8次。意思是字符串长度至少为8个字符。 - $:表示字符串的结束。 所以,整体来看,这个正则表达式匹配的字符串必须: 1. 包含至少一个大写字母。 2. 包含至少一个小写字母。 3. 包含至少一个数字。 4. 长度至少为8个字符。 这通常用于密码强度验证,要求密码有大小写字母、数字,并且长度至少8位。 现在,构建回答: - 使用中文。 - 结构清晰:逐步解释。 - 引用相关部分:用户提供了引用,但它们是关于其他正则表达式的。我可以提到引用[2]中有类似的正则表达式例子,比如强密码的表达式,但用户的具体表达式不同。引用[2]中有类似的东西:/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}$/,这很相似,但长度不同。 在引用[2]中:强密码:必须包含数字、字母,字符长度为6~15位 /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}$/ 或 /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{6,15}$/。 用户的正则是/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$,长度至少8,没有上限,并且使用.*允许任何字符。 所以,在回答中,我可以引用这个。 引用[3]是关于简化正则表达式的建议,但可能不直接相关。 回答结构: 1. 介绍正则表达式的整体目的:用于验证密码强度。 2. 分解表达式部分: - ^$:表示整个字符串。 - (?=.*[A-Z]):解释先行断言的含义。 - 类似地解释其他部分。 - .{8,}:长度要求。 3. 总结匹配的条件。 4. 自然地添加引用:例如,在解释先行断言时,可以提到引用中的类似例子。 引用标识:在引用的段落末尾添加[^n]。 最后,生成相关问题。 相关问题应该基于这个主题,比如: 1. 如何使用这个正则表达式在代码中? 2. 这个正则表达式的局限性是什么? 3. 如何修改它来添加特殊字符要求? 4. 相关的正则表达式例子。 确保LaTeX:在回答中,如果有数学表达式,比如.*[A-Z],这不算数学表达式,所以不需要用$...$。但如果有像范围或计数,可能不需要。指令是针对数学表达式的,所以这里可能不适用。 在引用中,用户有像^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$这样的表达式,但没有要求用LaTeX格式。指令说“所有行内数学表达式(包括变量、不等式、方程等)必须使用$...$格式”,但正则表达式不是数学表达式,所以我应该直接写正则表达式。 在回答中,我会直接写正则表达式代码,用反引号表示代码块或内联代码。 指令有示例:在“快速排序”例子中,有代码块用```python```。 所以,我可以将正则表达式放入代码块。 回答步骤: 1. 解释整体含义。 2. 分解每个部分。 3. 给出示例匹配的字符串。 4. 引用相关资源。 5. 生成相关问题。 用中文。 </think> ### 正则表达式 `/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$` 的含义解析 这个正则表达式主要用于验证密码强度,要求字符串满足特定的复杂度条件。以下我将逐步分解其结构,帮助您理解每个部分的含义。整个表达式的核心是使用**正向先行断言(positive lookahead)** 来确保字符串中包含大写字母、小写字母和数字,同时要求最小长度。正则表达式语法可参考站内引用中的常见模式[^2]。 #### 1. **整体结构** - `/^ ... $/`:这表示正则表达式匹配整个字符串,从开头 (`^`) 到结尾 (`$`)。例如,字符串 `"Abc12345"` 会被匹配,但 `" Abc12345"`(开头有空格)则不会,因为空格导致开头不匹配。 - 表达式由多个部分组成: - 三个正向先行断言 `(?=...)`:用于检查字符串是否满足某些条件,但不消耗字符(即不移动匹配位置)。 - `.`:匹配任意单个字符(除换行符外)。 - `{8,}`:表示前面的模式(这里是 `.`)至少重复 8 次,即字符串长度至少为 8 个字符。 - **简言之**:这个正则表达式要求字符串**必须同时包含至少一个大写字母、至少一个小写字母、至少一个数字,且总长度不少于 8 个字符**。它常用于密码策略中,确保密码强度。 #### 2. **分解每个部分** - `(?=.*[A-Z])`: - `(?= ... )` 是正向先行断言,表示“字符串必须满足括号内的条件”,但不计入匹配位置。 - `.*`:匹配零个或多个任意字符(`.` 表示任意字符,`*` 表示重复零次或多次)。 - `[A-Z]`:匹配一个大写字母(A 到 Z)。 - **含义**:字符串中必须包含至少一个大写字母。例如,在 `"abc123"` 中不满足(没有大写字母),而 `"Abc123"` 满足。 - 类似用法在引用[2]中的“强密码”例子中出现过(如 `/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,15}$/`)[^2]。 - `(?=.*[a-z])`: - 结构同上,但 `[a-z]` 匹配一个小写字母(a 到 z)。 - **含义**:字符串中必须包含至少一个小写字母。例如,`"ABC123"` 不满足(没有小写字母),而 `"Abc123"` 满足。 - `(?=.*[0-9])`: - `[0-9]` 匹配一个数字(09)。 - **含义**:字符串中必须包含至少一个数字。例如,`"Abcdefg"` 不满足(没有数字),而 `"Abc123"` 满足。 - `.{8,}`: - `.` 匹配任意字符。 - `{8,}` 表示前面的 `.` 至少重复 8 次,即字符串长度至少为 8 个字符。 - **含义**:整个字符串的最小长度为 8。例如,`"Abc123"`(长度 6)不满足,而 `"Abc12345"`(长度 8)满足。 #### 3. **组合效果和示例** - **匹配条件总结**: - 至少一个大写字母(A-Z)。 - 至少一个小写字母(a-z)。 - 至少一个数字(0-9)。 - 长度至少 8 个字符(允许更长)。 - 字符类型不限(因为 `.` 匹配任意字符,包括符号如 `!@#$`)。 - **有效匹配示例**: - `"Password123"`:包含大写 P、小写 assword、数字 123,长度 11。 - `"Abc!12345"`:包含大写 A、小写 bc、数字 12345,以及符号 `!`,长度 9- **无效匹配示例**: - `"password"`:缺少大写字母和数字。 - `"PASSWORD123"`:缺少小写字母。 - `"Abc123"`:长度不足 8。 - `"!@#$%^&*"`:缺少字母和数字。 这个表达式确保了密码的基础强度,但未要求特殊字符(如符号),您可以根据需求扩展。类似的正则表达式设计原则在引用[3]中提到,强调“宁简勿繁”,即拆解复杂条件为多个简单断言以提升可读性和效率[^3]。 #### 4. **实际应用** - 在编程中,这个正则表达式可用于表单验证(如密码输入框)。例如,在 JavaScript 中: ```javascript const regex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$/; console.log(regex.test("Abc12345")); // 输出 true console.log(regex.test("abc1234")); // 输出 false(缺少大写字母) ``` - 优点:使用先行断言能高效检查多个条件,无需嵌套或复杂逻辑。 - 局限性:它不检查字符类型重复(如多个数字),或特殊字符要求。如果需更严格规则(如包含符号),可追加断言,例如添加 `(?=.*[!@#$%^&*])`。 如果您有更多上下文(如具体代码实现),我可以提供更针对性的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值