我刚刚从远程机器递归复制了一个目录,并想在自己的计算机上处理这些文件。
然而,每当我远程使用 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
选项非常重要,否则缩进的移动代码将无法正常工作。
笔记:
ts
代表tabstop
sw
代表shiftwidth
(代表<<
和>>
命令),以及et
代表expandtab
(即使用空格,而不是制表符)。