使用 Vim 时,如何确保您从现在开始操作的所有文件都具有带有垂直制表符的 4 个空格制表符?

使用 Vim 时,如何确保您从现在开始操作的所有文件都具有带有垂直制表符的 4 个空格制表符?

我刚刚从远程机器递归复制了一个目录,并想在自己的计算机上处​​理这些文件。

然而,每当我远程使用 Vim 时,每个选项卡都会自动执行两件事:

  • 每个制表符使用 4 个空格
  • 在每个标签的位置处放置一个垂直标记,以指示有一个

我自己的机器有没有任何这些设置到位(我认为每个制表符大约有 8 个空格,并且没有垂直标记)

有没有办法,使得从现在起每当我使用 Vim 打开文件时,它都会与我最初开发该文件的远程机器的设置相匹配?

答案1

Vim 可以显示表示制表符、eol(行尾)字符等的元字符。要启用此功能,只需将以下内容放入文件中~/.vimrc

set list

要设置 vim 在制表符上使用 4 个空格:

set tabstop=4

如果您希望让制表符表现得像输入四个单独的空格一样,并且希望将它们作为一个制表符删除,请包括:

set expandtab
set softtabstop=4

或者,如果您像我一样懒,您只需将文件~/.vimrc从远程位置复制到主目录(请注意,它可能会使用您的版本上没有的选项或资源等)

scp [email protected]:~/.vimrc ~/

答案2

或者,你可以使用以下方式补充你的文件模式行,例如在评论中:

vim: set list tabstop=4:

(请注意,关键字前必须有空格或一行vim:。)

这样,它们就会自动在任何系统的 vim 上正确显示。(除非'modeline'选项未设置。)

答案3

我使用三个选项并将它们放在文件末尾的注释中(即modeline):

// vim: ts=4 sw=4 et

这对我自己的项目来说非常有用。其他项目无法添加这样的评论,因此大多数情况下我最终不得不手动添加。

但是,如果您确定要在所有地方都使用此类默认设置,则可以将它们放在文件中,~/.vimrc而不是每个文件中。当然,您可以在文件中使用注释来更改默认设置(即,您Makefile肯定想要制表符,而不是空格……至少在过去,这是一个问题)。

我认为这个sw选项非常重要,否则缩进的移动代码将无法正常工作。

笔记:

  1. ts代表tabstop
  2. sw代表shiftwidth(代表<<>>命令),以及
  3. et代表expandtab(即使用空格,而不是制表符)。

相关内容