Open specific number of files in Vim with specific pattern from command line
例如,我想编写一个shell脚本来使用vim打开5个文件。在第一个选项卡中,仅显示第一个文件;在第二个选项卡中,其余4个文件分别显示在左上角、右上角、左下角和右下角。当前选项卡在第一个选项卡中。怎么做?如果我能用一行命令
1 | vim -option file -option |
会很好的。但我尝试了一点,但没能做到。你对此有什么建议吗?
我知道如何在VIM中编辑多个文件。我每天都这样做。我现在要做的是从bash同时打开多个文件。是的,我知道bash中vim的-p和-o和-o选项。但是它们以同样的方式迭代打开文件,这不符合我的要求。我所寻求的是构建shell脚本以满足上面指定的需求的方法。谢谢。
可以将这些配置放入自定义脚本文件中,然后可以选择使用该脚本文件打开工作区配置。
脚本文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | :bl :bf :tabe :n :split :vsplit :wincmd l :n :wincmd j :n :n :vsplit :wincmd l :n :wincmd h :wincmd k :tabn |
你可以这样称呼它:
1 | vim -S script.vim file1.txt file2.txt file3.txt file4.txt file5.txt |
这将打开file1.txt上的vim,根据您的配置,它旁边有一个打开的选项卡,当您切换到该文件时,将光标放在左上角的文件(file2.txt)上。
每行增加说明:
请注意,拆分时,光标将停留在原始窗口上,每个窗口将显示不同的文件,这些文件可以使用
正如我在评论中提到的,前两行是告诉Vim我们已经读取了每个文件,所以Vim不会在会话结束时抱怨"还要编辑4个文件"。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | :bl Go to last file :bf Go to first file :tabe Create new tab :n Open next file (file2.txt) :split Split horizontally (will create new window below with the content of file2.txt) :vsplit Split vertically (will create new window on the top right with the content of file2.txt) :wincmd l Go to the window to the right (which currently displays file2.txt) :n Open next file (file3.txt) :wincmd j Go to window at the bottom :n Open next file (file3.txt, because bottom window was displaying file2.txt) :n Open next file (file4.txt) :vsplit Split vertically (will create new window on the right with content file4.txt) :wincmd l Go to window to the right (which is bottom right) :n Open next file (file5.txt, because bottom-right window was displaying file4.txt) :wincmd h Go to window to the left :wincmd k Go to window above (this sets the cursor on file2.txt on top left) :tabn Go to next tab (the first one, displaying file1.txt) |
根据操作规程,应在外壳上按完全相同的顺序进行:
如果您想在VIM启动后从第一个选项卡开始,可以添加一个最终的
注意,它也有点短,可读性更强(有目的性)。
用shell变量替换固定名称(第一个、第二个,…)将在许多其他项目中保持相同的工作流。
享受。