ChatGPT解决这个技术问题 Extra ChatGPT

我的 .vimrc 文件在哪里?

vim

我一直在使用 Vim,我真的很想保存我的设置。我遇到的问题是我找不到我的 .vimrc 文件,而且它不在标准的 /home/user/.vimrc 位置。我怎样才能找到这个文件?

如果它不存在,请创建它。
我的 Ubuntu 机器将它放在一个名为 /usr/share/vim/vimrc 的文件中。
确认 Lubuntu 21.10 遵循 @ckjbgames 评论中的约定(/usr/share/vim/vimrc 没有句点)。但是,此文件包含以下注释:Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc. This happens after /etc/vim/vimrc(.local) are loaded, so it will override any settings in these files.

a
alex

您需要创建它。在我使用的大多数安装中,默认情况下没有创建它。

您通常将其创建为 ~/.vimrc


还要检查 /etc/vim/vimrc
@Nateshbhat:我应该继续使用 /etc/vim/vimrc 还是将其复制到 ~/.vimrc?或者我可以两者兼得吗?
如果您想自定义它,我会先将其复制到本地。否则,您将更改所有用户的设置。
您应该知道,如果您创建此文件,它将忽略系统 vimrc 文件中的所有设置。 (例如 /etc/vim/vimrc。)在创建 .vimrc 之后,这让我感到困惑,没有用我所有常用的选项完全填充它(因为它位于我不打算做太多工作的服务器上) 它使我的 vim 处于损坏或无法正常工作的状态。
嘿!。我在 VSCode 中使用 VIM 扩展。有没有办法改变扩展的键绑定?
m
mit

如果你已经有一个 .vimrc 文件,这些方法可以工作:

:scriptnames 列出 Vim 为您加载的所有 .vim 文件,包括您的 .vimrc 文件。

:e $MYVIMRC 打开 &编辑您正在使用的当前 .vimrc,然后使用 Ctrl + G 在状态栏中查看路径。


@MorganWilde 不一定,:scriptnames:e $MYVIMRC 都为我返回空白输出。
:scriptnames +1。但是,不能保证设置 $MYVIMRC,例如在使用 vim -u filename 启动 vim 时。
:scriptnames 有 vimrc 但没有 .vimrc,它们是一样的吗?我发现它们位于我的 usr/share 文件夹中,添加 ~/.vimrc (作为公认的答案)甚至会在没有进一步配置的情况下做任何事情吗?这是一种将用户特定选项添加到 vimrc 的方法吗?
请注意,:e $MYVIMRC 仅在首先存在 vimrc 文件时才有效。否则,这将开始编辑一个字面上称为 $MYVIMRC 的文件。
@Shadoninja - 这不是“你的”,而是全局 rc 文件。无论您在 .vimrc 文件中(大多数情况下在您的主目录中)定义什么,都将覆盖 /etc/vimrc 中的默认值。
L
Laurence Gonsalves

简短的回答:

要创建 vimrc,请启动 Vim 并执行以下操作之一:

:e $HOME/.vimrc  " on Unix, Mac or OS/2

:e $HOME/_vimrc  " on Windows

:e s:.vimrc      " on Amiga

插入所需的设置,然后保存文件。

请注意,此文件的存在将禁用 compatible 选项。详情见下文。

长答案:

vimrc 有两种:

$HOME 中的用户 vimrc

$VIM 中的系统 vimrc(在 Amiga 系统上,s:.vimrc 被认为是用户 vimrc)

用户 vimrc 文件在用户创建之前通常不存在。如果您找不到 $HOME/.vimrc(或 Windows 上的 $HOME/_vimrc),那么您可以并且可能应该创建它。

系统 vimrc 通常应保持不变,它位于 $VIM* 目录中。系统 vimrc 不是您保存个人设置的好地方。如果你修改了这个文件,你的修改可能会在你升级 Vim 时被覆盖。此外,此处的更改将影响多用户系统上的其他用户。在大多数情况下,用户 vimrc 中的设置将覆盖系统 vimrc 中的设置。

:help vimrc

包含初始化命令的文件称为“vimrc”文件。 vimrc 文件中的每一行都作为 Ex 命令行执行。它有时也称为“exrc”文件。它们是相同类型的文件,但“exrc”是 Vi 常用的,“vimrc”是 Vim 特定的名称。另见 |vimrc-intro|。个人初始化的地方:Unix $HOME/.vimrc or $HOME/.vim/vimrc OS/2 $HOME/.vimrc, $HOME/vimfiles/vimrc or $VIM/.vimrc (or _vimrc) MS-Windows $HOME /_vimrc, $HOME/vimfiles/vimrc or $VIM/_vimrc Amiga s:.vimrc, home:.vimrc, home:vimfiles:vimrc or $VIM/.vimrc 文件按照上面指定的顺序搜索,只搜索第一个找到的就是读取。

(对于上述情况,MacOS 算作 Unix。)

请注意,仅仅存在 用户 vimrc 将通过关闭 compatible 选项来改变 Vim 的行为。从 :help compatible-default

当 Vim 启动时,'compatible' 选项打开。这将在 Vim 开始初始化时使用。但是一旦找到用户 vimrc 文件,或者当前目录中的 vimrc 文件,或者设置了“VIMINIT”环境变量,它就会被设置为 'nocompatible'。这具有设置或重置其他选项的副作用(请参阅“兼容”)。但只会更改尚未设置或重置的选项。

* $VIM 可能不在你的 shell 中设置,但总是在 Vim 中设置。如果您想查看它的设置,请启动 Vim 并使用命令 :echo $VIM


P
Peter Mortensen

作为附加信息,主要在 macOS 中,.vimrc 文件位于目录:

/usr/share/vim/.vimrc

那就是系统vimrc。最好编辑 $HOME/.vimrc,如果它不存在就创建它。
如果 .vimrc 文件未在主目录中创建,则 vi 引用 /usr/share/vim/.vimrc 文件以供使用。
正如我发现的那样,在 Ubuntu 中也是如此。
R
Rook
:echo($MYVIMRC)

将为您提供 .vimrc 文件的位置。

:e $MYVIMRC

会打开它。


我收回以下内容:-bash: 意外标记 '$MYVIMRC' 附近的语法错误
@YannisDran - 嗯,什么?
@Idigas 我在命令窗口上输入 :echo(xxx) 但现在我意识到您打算将其输入 vim 编辑器。然而,即使 :e xxx 有效, :echo(xxx) 也无效。它说 E121 Undefined Variable: xxx E15: Invalid Expression : ($xxx)
@YannisDran - 为了清楚起见,你在 vim 命令行中输入 :echo($myvimrc) 时遇到了这个错误?不是 :echo(myvimrc) 吗?
我使用 $ 并在 vi 编辑器中进行了操作(键入:启用命令行)。顺便说一句,现在 vim 什么都没有响应,它只将指示器放在 vim 的第一行。 (Vim-Vi 在 OSX 上改进了 v.7.3)
P
Peter Mortensen

无论出于何种原因,这些答案对我来说都不太适用。这对我有用:

在 Vim 中,:version 命令为您提供系统和用户 vimrc 和 gvimrc 文件(以及其他内容)的路径,输出如下所示:

 system vimrc file: "$VIM/vimrc"
   user vimrc file: "$HOME/.vimrc"
    user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"
  user gvimrc file: "$HOME/.gvimrc"

你想要的是user vimrc file: "$HOME/.vimrc"

所以要编辑文件:vim $HOME/.vimrc

来源:Open vimrc file


我不明白现有的答案如何对你不起作用,而事实上你提出的解决方案已经被它们所涵盖。 This answer 提及 $HOME/.vimrcthe top answer 提及 ~/.vimrc,与 $HOME/.vimrc 相同。
完全同意你的看法。当我的答案被编辑时,我的意思丢失了
S
SebMa

在 unix vim --version 上告诉您 vim 配置文件的各个位置:

   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/share/vim"

可以验证这是否适用于与 Git for Windows 捆绑的 VIM。 (注意到这一点只是因为一个 SO 答案可能会假定在 Git Bash 中不起作用。)
P
Peter Mortensen

打开 Vim,在普通模式下输入:

:echo $VIM

被低估的答案
对我来说,它只输出 /usr/share/vim。版本 8.2.100,Arch Linux。
这会告诉您系统 vimrc 所在的目录,但不会告诉您用户 vimrc 应该去哪里,或者它的名称应该是什么。
好吧,问题“在哪里”是 vimrc 文件。用户 vimrc 应该去哪里?放入~/.vimrc~/.vim/vimrc,注意后者前面没有点。
@Peter Mortensen 这一定是公认的答案。非常感谢!
F
FreelanceConsultant

可以使用 find 命令获取有用信息

find / -iname "*vimrc*" -type f 2>/dev/null

已经有很多答案了,但有时对包含名称“vimrc”的任何内容运行“查找”很有用。

原因是这将显示您当前在系统上实际可用的文件,而不是您可能放在系统上的文件。 (您将从 :version 获得的信息,如其他答案中所述。)

我的系统上的示例结果

在我的系统上,这会产生

/usr/share/vim/vim82/vimrc_example.vim
/usr/share/vim/vim82/gvimrc_example.vim
/etc/vim/gvimrc
/etc/vim/vimrc
/etc/vim/vimrc.tiny

这非常有用,因为它告诉我们在 gvim 和 vim 的共享目录中安装了 2 个示例文件,并且在 /etc/ 下还有一些系统范围的配置文件。

在我的系统上,我还有一个位于 ~/.vimrc 的文件,但它没有出现在此列表中,因为它是指向另一个文件的链接,存储在 ~/Linux-Config 下。但是你不会有这个目录,它特定于我在我自己的网络上使用的机器。

使用的find语法详解

解释:

find 从根目录 / 开始(递归查找)

包含不区分大小写的正则表达式 *vimrc* 的任何内容,这意味着在某处带有 vimrc(不区分大小写)的任何名称,可以在前面或后面跟任何东西或什么都没有 (*)

类型 = 文件(不是目录/符号链接等)

将所有错误都抛出到 /dev/null 否则输出会被 /proc 中的不可读错误发送垃圾邮件


如果 * 的作用类似于常规 glob,则应改为: find / \( -iname "*vimrc*" -o -iname ".*vimrc*" \) -type f 2>/dev/null ,否则您将错过以 . 开头的文件名(例如 ~/.vimrc 等),就像在常规 shell glob 中一样,{ 5} 不抓取以 . 开头的文件(因为这些文件在大多数 unix/linux 命令中“轻微隐藏”此命名方案(比较 ls -lls -al,而 echo * 将只显示那些不'不以 .) 开头,因此常规 * glob 默认情况下不包括那些)
C
Community

这里还有一些提示:

在 Arch Linux 中,全局文件位于 /etc/vimrc。里面有一些评论有帮助的细节。

由于文件名以 . 开头,因此除非您使用 ls -a 显示所有文件,否则它是隐藏的。

在 Vim 中输入 :version 会显示很多有趣的信息,包括文件位置。

如果您不确定 ~/.vimrc 是什么意思,请查看这个问题。


P
Peter Mortensen

我想分享我如何在 Mac 上将显示行号设置为默认值。

在终端中,键入 cd。这将帮助您转到主文件夹。在终端中,输入 vi .vimrc。这将创建一个您要使用的空 vimrc 系统文件。在文件中,键入 set number,然后按键盘上的 Esc 并键入 :wq。这将设置默认设置文件 vimrc 中显示的行号并保存。 vi 看看这是否有效。如果没有,请尝试完全重新启动终端。

如果在终端中,输入 cd /usr/share/vim/,转到该文件夹,然后输入 ls。可以直接看到一个名为 vimrc 的文件。但它是一个只读的系统文件。我觉得尝试修改它不是一个好主意。所以按照上面的步骤自己创建一个vimrc比较好。它对我有用。


对于我的 CentOS7 安装,我需要将一件事更改为上述内容:在第 1 步之后,键入“cd username”。
H
HoldOffHunger

.vimrc 文件在哪里?这取决于操作系统。如您所见,您正在寻找 /home/$user/.vimrc,这可能意味着您正在使用 BSD / Linux。以下是每个操作系统的位置...

BSD/Linux:/home/$user/.vimrc

SunOS / Solaris:/export/home/$user/.vimrc

MacOS:/Users/$user/.vimrc

安卓:/data/media/$userid/.vimrc

Unix : $root/home/$user/.vimrc

AT&T Unix : $root/usr/$user/.vimrc

Unix-Derived : /var/users/$user/.vimrc /u01/$user/.vimrc /usr/$user/.vimrc /user/$user/.vimrc /users/$user/.vimrc (来源: Wikipedia :每个操作系统的默认主目录。)

/var/users/$user/.vimrc

/u01/$user/.vimrc

/usr/$user/.vimrc

/user/$user/.vimrc

/users/$user/.vimrc(来源:维基百科:每个操作系统的默认主目录。)

如果它不存在,请使用 ~/.vimrc 创建它。

此外,root 用户有他们自己的特殊 .vimrc 文件,可以在 BSD/Linux 上的 /root/.vimrc 中找到(以及其他操作系统的等效位置)。

该位置在 $HOME 变量中设置,该变量始终在 Linux 环境中设置。 (Source: StackExchange->Unix & Linux。)


P
Peter Mortensen

我尝试了上一个答案中的所有内容,但找不到 .vimrc 文件,所以我不得不制作一个。

我复制了示例文件 cp vimrc_example.vim ~/.vimrc

我必须创建文件,从 /usr/share/vim/vim74/vimrc_example.vim 复制到 ~/.vimrc。这些是 vimrc_example 文件中的说明。

我的解决方案是针对其他操作系统的 Unix。根据 Vim 文档,您的目标路径应如下所示:

    For Unix and OS/2   : ~/.vimrc
    For Amiga           : s:.vimrc
    For MS-DOS and Win32: $VIM\_vimrc
    For OpenVMS         : sys$login:.vimrc

b
blckCoach

实际上你有一个 vimrc

/etc/vimrc

当您在其中编辑某些内容时,如果您不希望可以在其中创建本地 vimrc,则更改将影响所有用户

~/.vimrc

此处的更改只会影响一个用户


P
Peter Mortensen

Ubuntu (12.04 (Precise Pangolin)) 中的 vimrc 文件:我在 Vim 中尝试了 :scriptnames,它同时显示了 /usr/share/vim/vimrc~/.vimrc

但我手动创建了 ~/.vimrc


P
Peter Mortensen

SUSE Linux Enterprise Server (SLES)openSUSE 中,全局的位于 /etc/vimrc

要编辑它,只需执行 vi /etc/vimrc


P
Peter Mortensen

从 cmd (Windows):

C\Users\You> `vim foo.txt`

现在在 Vim 中,输入命令模式:“:”(即 Shift + ;)

:tabedit $HOME/.vimrc

这假定键盘采用美式布局。
F
Franco Díaz

在我的系统中,安装了 Garuda Linux 的文件的名称是 file:///etc/xdg/nvim/sysinit.vim,所以尝试找到这个文件并添加您的自定义更改。


A
Abhiveer Singh

如果在 Windows 中,它可能位于文件夹“vim”中 Program Files(x86) 下的 C 目录中


您的答案可以通过额外的支持信息得到改进。请edit添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以找到有关如何写出好答案的更多信息in the help center