VIM:打开多个文件时执行多字命令

时间:2018-12-05 16:43:26

标签: vim vi pathogen

我的论文由多个tex文件组成,我不断在它们之间滑动,所以我创建了一个shell脚本load_files.sh:

#!/bin/bash

vim file1.tex file2.txt, ..., fileN.tex

这很好,但不幸的是,由于复杂的多文件结构,VIM的拼写检查无法正常工作。我发现@Dominik的答案解决了问题(Vim spellcheck not always working in .tex file. Check region in Vim )。但是,我不想每次打开文件时都手动运行该命令,也不想将其放入tex.vim文件中,因为只有我的论文才有这个问题。因此,我尝试在shell脚本中使用-c和+标志,但它不起作用(Vim - how to run a command immediately when starting vim?How can I open vim with a particular line number at the top?),但不起作用。这就是我将shell脚本中的vim行更改为:

  • vim +"syntax spell toplevel" file1.tex file2.txt, ..., fileN.tex
  • vim -c "syntax spell toplevel" file1.tex file2.txt, ..., fileN.tex

他们很好地打开了文件,但是当我打开拼写检查器时,问题并没有解决。仅供参考,如果我正常打开文件并运行:syntax spell toplevel,则拼写检查器将起作用。

这是我对@Conner的回复,因为评论太久了:

感谢@Conner的帮助。您是说我使用-c标志时,命令仅在第一个文件上运行,而不是在所有文件上运行吗?这绝对是问题,但是您提供的解决方案无法提供帮助。

  • 我在问题中说,我只拥有对论文tex文件所做的更改,因此不想将命令添加到tex.vim。
  • 如果我创建本地vimrc,请说.thesis_vimrc并使用-u标志,然后,如果我想要我的插件,则需要将〜/ .vimrc复制到.thesis_vimrc并然后添加syntax spell toplevel。不幸的是,Pathogen停止工作(大概是因为它需要该目录中的所有插件,但我不想我所有插件都具有多个副本)。我尝试使用~/.vimrc.thesis_vimrc内获取so ~/.vimrc,但遇到相同的Pathogen错误。

  • 我尝试使用syntax spell toplevel打开所有文件并更改拼写,然后使用mksession保存了一个新会话。当我打开保存的会话时,syntax spell toplevel不变。

  • 最后,我尝试使用modelinesset modelineset modelines=1添加到~/.vimrc并将% vim: syntax spell toplevel添加到文件的第一行,但是然后,当我打开那些文件时,转到缓冲区并打开拼写检查器,我将收到以下错误:

    语法= tex 处理模式时检测到错误: 第1行: E518:未知选项:顶级

当然不能这么复杂,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

使用vim -c 'text here'确实适用于多字命令。

如果您阅读链接到的帖子,则会看到:

enter image description here

,它指示您将命令写入~/.vim/after/syntax/tex.vim文件中。这样,您不必手动执行它。

只需键入即可实现

echo "syntax spell toplevel" >> ~/.vim/after/syntax/tex.vim

如果您阅读:help -c,则会发现:

  

-c {command} {command}将在第一个文件被执行后被执行。               阅读

您可以在此处选择几个其他选项。如果只想为特定项目使用这些选项,则可以创建一个自定义.vimrc,例如.myprojectvimrc,并用-u指定它。参见:help -u

您也可以使用vim会话。参见:help mksession:help -S

您还可以在文件中使用Modeline。参见:help modeline

请注意,您无需键入脚本来进行vim实例化,只需键入vim file*.tex