用文档存储 vim 设置

Posted

技术标签:

【中文标题】用文档存储 vim 设置【英文标题】:Storing vim settings with a document 【发布时间】:2010-09-23 17:31:09 【问题描述】:

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

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

最好不必在文档本身中编辑设置。

【问题讨论】:

【参考方案1】:

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

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

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

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

set modeline

【讨论】:

确保设置了'modeline'。 更多信息请访问vim.wikia.com/wiki/Modeline_magic。例如,对于 vim,您必须使用 /* vim: set tabstop=8 expandtab: */ @Lekensteyn 或者干脆 :help modeline ;) 我同意,但是请注意,将这些 cmets 放入的是用户,而不是编辑器本身。此外,vim 并不是目前唯一支持该功能的编辑器。您是否喜欢使用该功能取决于您的习惯。我个人没有。 在我的机器上,modelines(复数)设置为0,导致它仍然被忽略。我想也是以防万一。您可以使用 :set modelines 检查当前设置,并使用 :set modelines=10 行进行修改,以确保它在前 10 行内搜索内联设置。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

如果你还没有安装一堆插件,还有:mkvimrc命令。但这也会捕获映射,因此如果您有一堆插件映射,则需要检查并删除所有这些映射,这样您就不会定义它们两次。 它对我有用,除了~/.vimrc 部分,我没有尝试过,因为它无论如何都无法工作。这并不完全符合要求,但有帮助。【参考方案4】:

你可以使用 Vim 的 Session 支持:

:mksession

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

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

【讨论】:

【参考方案5】:

您可以将文件保存为特定类型,例如特殊的文件名格式或扩展名,然后在 .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

【讨论】:

以上是关于用文档存储 vim 设置的主要内容,如果未能解决你的问题,请参考以下文章

Vim中如何设置语法高亮和行号

在核心数据文档中存储文档特定设置的最佳方式是啥?

在 iOS8 中如何设置私有文档目录作为存储提供程序应用程序扩展正在使默认文档目录共享?

爬坑Vim 文档加密 & 解密

python 用txt文档存储银行客户信息。如银行卡号、密码等

iCloud:如何存储不在文档中的数据?