让vim在split中同时打开两个文件

时间:2017-02-13 13:00:39

标签: vim

我目前正试图绕过vim,到目前为止我学到了很多东西!有一点我还没有成功:

如果vim符合某个条件,我如何让vim同时打开两个文件?

最突出的例子是Objective-C,我通常使用.h和.m文件。将它们拼凑在一起是有意义的,因为它们都是一个单元。

在我目前的项目中,我有类似的情况。我有一个使用组件的reactjs的前端项目,比如

src/
  components/
    Header/
      index.jsx
      styles.scss

如果我打开index.jsx,我非常希望将styles.scss打开。这可以实现吗?或者是否有一个我还没有找到的插件呢?

编辑: 我以我从项目根目录开始的方式使用vim作为我的项目。我不认为(但也许我错在这里,我对vim很新),从我的项目打开子文件夹,编辑,关闭vim,打开vim中的下一个子文件夹是一个很好的工作流程...所以:vim可以访问我的所有项目文件,我打开一个特定的index.jsx,如果在同一个文件夹中有一个styles.scss,那么在分割中也会显示。

4 个答案:

答案 0 :(得分:2)

带有自动命令的解决方案,放入vimrc:

function! CheckAndSplit(filename)
    if !filereadable(a:filename) | return | endif
    exe 'split' a:filename
endf

au BufReadPost *.m  call CheckAndSplit(expand('%:r').'.h')
au BufReadPost index.jsx  call CheckAndSplit(expand('%:p:h').'/styles.scss')

答案 1 :(得分:1)

自动?那么我认为你需要一个插件,或者写一个。手动?是的,你可以像这样把它们一起管道:

:split index.jsx | split styles.css

或者你可以在你的vimrc中尝试这样的东西,但它是untestet,并且需要一些异常处理:

autocmd BufReadPost *.jsx :sp %:h/styles.css<CR>

答案 2 :(得分:1)

请参阅vim选项: -o[N] Open N windows (default: one for each file) -O[N] Like -o but split vertically
示例:vim -O components/Header/*在垂直拆分中同时打开index.jsxstyles.scss

Also checkout this question

答案 3 :(得分:0)

或者,您可以尝试打开文件夹本身。

vim src/components/Header

这将列出Header目录下的文件。您可以在任何文件上按 Enter ,vim将在缓冲区中打开该文件。要返回目录列表,请同时按 Ctrl 6

基本上 Ctrl 6 将带您到当前缓冲区之前的最后一个缓冲区。

此外,一旦在缓冲区中打开了一个文件,要在拆分窗口中打开另一个文件,请尝试

:vsplit filename

:split filename

我希望这会对你有所帮助。