54

有没有办法用文档保存 vim 设置的状态?

澄清一下:我正在编辑一个文档并更改了一堆设置。我不一定记得是哪个;我不想再次使用这些设置,除了当前文档。我不想手动尝试记住我所做的更改;或者我更改的设置的神奇缩写是什么。我只想拥有,比如说,对于“mydoc.txt”,一个“mydoc.vim”文件,它可以让我回到我离开的地方,并且设置文件将根据 vim 设置自动保存,比如,或者可能是ctrl-key 在我退出之前执行它。如果 vim 可以自动查找这样的文件,那将很方便。

并且最好不必将设置编辑到文档本身和从文档中移出。

4

5 回答 5

114

是的,vim 设置可以包含在文档中。

它们大多出现在评论中,因此它们不会弄乱原始文件。选项卡特定设置的示例是:

/* ex: set tabstop=8 expandtab: */

请注意,此命令在大多数情况下都有效,但是modeline出于安全原因,通常在未打开服务器的情况下设置服务器。要打开该功能,请在 $HOME/.vimrc 或系统 $VIM/vimrc 中添加以下内容:

set modeline
于 2008-11-24T05:10:43.577 回答
23

你可以使用 Vim 的 Session 支持:

:mksession

您可以稍后通过运行vim -S Session.vim或使用来加载它source Session.vim

还有 vim 插件可以自动加载/保存会话

于 2008-11-24T08:58:55.880 回答
9

您可以通过编辑.vimrc文件来全局保存您的设置。

Vim 还允许您使用模式线保存每个文件的设置

于 2008-11-24T05:12:39.843 回答
9

以下是将所有当前设置保存到文件的方法:

:redir > textfile.txt 
:set all 
:redir END

如果您愿意,只需将该文件重命名~/.vimrc即可。

于 2008-11-24T06:37:19.893 回答
4

您可以将文件保存为特定类型,例如特殊文件名格式或扩展名,然后在 .vimrc 中为该文件类型定义一个自动命令。

我为我的 makefile 执行此操作,以确保我拥有特定文件所需的各种设置。

例如,这是我的自动命令 dec。

if has("autocmd")
  autocmd BufRead,BufNewFile Makefile*  :set noexpandtab
  autocmd BufRead,BufNewFile mirror.conf    :set noexpandtab
  autocmd BufRead,BufNewFile *.html*    :set shiftwidth=2
  autocmd BufRead,BufNewFile diff_files :set autowrite
  autocmd BufRead,BufNewFile lbnamed*   :set ft=perl
  autocmd BufRead,BufNewFile *.t        :set ft=perl
endif
于 2008-11-24T09:51:10.093 回答