在 mac 终端中更改我的 code/text 编辑器

Changing my code/text editor in mac terminal

我正在学习版本控制基础知识的课程,但我无法使用我配置“atom”的代码编辑器进行 git 提交。

因此,为了通过我的代码编辑器处理提交,我想切换编辑器,但我的配置命令不会配置 sublime 文本。

这是我尝试使用引号处理配置时发生的情况

$ git config --global core.editor "subl -n -w"
warning: core.editor has multiple values
error: cannot overwrite multiple values with a single value
       Use a regexp, --add or --replace-all to change core.editor.

当我输入不带引号的配置命令时,它似乎通过了,但仍然无法使用。

$ git config --global core.editor subl -n -w
usage: git config [<options>]

Config file location
    --global              use global config file
    --system              use system config file
    --local               use repository config file
    -f, --file <file>     use given config file
    --blob <blob-id>      read config from given blob object

Action
    --get                 get value: name [value-regex]
    --get-all             get all values: key [value-regex]
    --get-regexp          get values for regexp: name-regex [value-regex]
    --get-urlmatch        get value specific for the URL: section[.var] URL
    --replace-all         replace all matching variables: name value [value_regex]
    --add                 add a new variable: name value
    --unset               remove a variable: name [value-regex]
    --unset-all           remove all matches: name [value-regex]
    --rename-section      rename section: old-name new-name
    --remove-section      remove a section: name
    -l, --list            list all
    -e, --edit            open an editor
    --get-color           find the color configured: slot [default]
    --get-colorbool       find the color setting: slot [stdout-is-tty]

Type
    --bool                value is "true" or "false"
    --int                 value is decimal number
    --bool-or-int         value is --bool or --int
    --path                value is a path (file or directory name)
    --expiry-date         value is an expiry date

Other
    -z, --null            terminate values with NUL byte
    --name-only           show variable names only
    --includes            respect include directives on lookup
    --show-origin         show origin of config (file, standard input, blob, command line)

当我尝试提交时,我得到了这个结果。

$ git commit
hint: Waiting for your editor to close the file... subl -n -w: subl: command not found
error: There was a problem with the editor 'subl -n -w'.
Please supply the message using either -m or -F option.

这是我在 运行 git var -l.

时得到的状态
credential.helper=osxkeychain
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
user.name=xxxx xxxxxxxxxx
user.email=xxxxxxxxxx@yahoo.com
core.editor=c48875ba-b535-4644-ba4d-1a8d011d4c51
core.editor=atom
core.editor=atom
core.editor=atom
core.editor=atom
core.editor=atom
core.editor=atom
core.editor=atom
core.editor=atom
core.editor=atom
cor.editor=subl -n -w
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
core.editor=subl -n -w
GIT_COMMITTER_IDENT=xxxx xxxxxxxxxx <xxxxxxxxxx@yahoo.com> 1573775118 -0500
GIT_AUTHOR_IDENT=xxxx xxxxxxxxxx <xxxxxxxxxx@yahoo.com> 1573775118 -0500
GIT_EDITOR=subl -n -w
GIT_PAGER=less

根本问题是 core.editor 的许多重复设置。您收到的错误消息告诉您一种修复方法:

error: cannot overwrite multiple values with a single value
   Use a regexp, --add or --replace-all to change core.editor.

因此将 --replace-all 选项添加到您现有的命令行命令就足够了。


不过,如果您不喜欢,还有更多选择。

如果您确信您选择的编辑器生成良好且适当的(对于 Git)纯文本文件——对于 Git,这意味着文件没有富文本编码,在 UTF-8 中,没有字节顺序标记,并且每一行都以换行符结尾——您可以 运行 您的编辑器直接在您的全局配置文件上:

vim $HOME/.gitconfig

例如,如果您的编辑器是 vim 并且全局配置文件位于常用位置(某些安装使用不太常用的位置)。您也可以 运行:

git config --global --edit

到运行你当前选择的文件编辑器,当然这要求你当前选择的编辑器是你想要的编辑器。 :-) 这里还有一个技巧:

git -c core.editor=some-editor-of-choice --global --edit

-c 选项可让您在这一个命令的持续时间内覆盖您喜欢的任何设置。所以这告诉 Git:使用我为这个命令选择的编辑器,在我的全局配置文件中调用这个临时选择的 core.editor

如果您不喜欢这些选项中的任何一个,您可以使用:

git config --global --unset-all core.editor

删除每个 core.editor设置,之后你有none,之后一个git config应该允许你设置一个。

请注意,默认情况下 git config --global what.ever value 将替换现有的 what.ever 设置。目前还不清楚你是如何进入你所处的情况的,但是 git config --global --add what.ever another-value 添加 一个额外的 what.ever=another-value.