在Vim中,打开与当前文件同名但位于不同目录中的文件
我知道这是一个初学者的问题!!假设我们有两个目录:在Vim中,打开与当前文件同名但位于不同目录中的文件,vim,Vim,我知道这是一个初学者的问题!!假设我们有两个目录: recipes/ apple-pie.txt blueberry-muffin.txt disaster-stories/ apple-pie.txt blueberry-muffin.txt 我们还假设Vim的当前目录设置为recipes/和disaster stories/的父目录 问题: 如果我正在编辑recipes/apple pie.txt,我希望能够输入自定义命令,例如:dsstr,从而保存当前文件并打开灾难故事/
recipes/
apple-pie.txt
blueberry-muffin.txt
disaster-stories/
apple-pie.txt
blueberry-muffin.txt
我们还假设Vim的当前目录设置为recipes/
和disaster stories/
的父目录
问题:
如果我正在编辑
recipes/apple pie.txt
,我希望能够输入自定义命令,例如:dsstr
,从而保存当前文件并打开灾难故事/apple pie.txt
。我该怎么做?编辑:好的,我有一个解决方案给你。我不知道如何在vim中编写函数,但您可以编写一个shell脚本来完成这项工作。我试着编写一个脚本来保存当前文件,退出,然后切换到新文件,但是遇到了一些错误。但这将允许您只需键入:
:w | ! scriptName
!!告诉vim运行诸如“cd”或“ls”之类的命令
制作shell脚本的步骤:-cd
-mkdir bin(如果bin在~中不存在)
-cd-binEDIT:好的,我有一个解决方案给你。我不知道如何在vim中编写函数,但您可以编写一个shell脚本来完成这项工作。我试着编写一个脚本来保存当前文件,退出,然后切换到新文件,但是遇到了一些错误。但这将允许您只需键入:
:w | ! scriptName
!!告诉vim运行诸如“cd”或“ls”之类的命令
制作shell脚本的步骤:-cd
-mkdir bin(如果bin在~中不存在)
-cd-bin将其放在vimrc上:
命令-bar Dsstr w | exec'edit'。展开('%:p:h:h')。/disaster stories/'.展开('%:t')
然后您可以使用:Dsstr
更改为该文件
这一点都不灵活,但我不确定你需要什么,所以我不能再进一步了
编辑
现在是一个简短的描述,并指向Vim的帮助以了解更多详细信息:
命令代码>:创建命令并覆盖它(如果存在):帮助:命令
:允许连接命令:h:命令栏-bar
:用户命令必须以大写字母开头Dsstr
:写入,然后执行下一个命令:h:酒吧w |
:将参数作为ex命令执行:h:执行exec
:请参阅:h expand()expand()
命令-bar Dsstr w | exec'edit'。展开('%:p:h:h')。/disaster stories/'.展开('%:t')
然后您可以使用:Dsstr
更改为该文件
这一点都不灵活,但我不确定你需要什么,所以我不能再进一步了
编辑
现在是一个简短的描述,并指向Vim的帮助以了解更多详细信息:
命令代码>:创建命令并覆盖它(如果存在):帮助:命令
:允许连接命令:h:命令栏-bar
:用户命令必须以大写字母开头Dsstr
:写入,然后执行下一个命令:h:酒吧w |
:将参数作为ex命令执行:h:执行exec
:请参阅:h expand()expand()
:灾难故事/apple pie.txt
Vim将在命令行命令中将%
扩展到当前编辑的文件名。您可以添加一些修改器以不同的方式操作文件名(请参见手册中的)。例如,%:t
是文件名的尾部(最后一个组件);如果%
给出recipes/apple pie.txt
,那么%:t
给出apple pie.txt
:w|e灾难故事/%:t
通常,当我想做这类事情时,我不需要定制密钥绑定。如果您最近使用过这样的命令,您可以键入它的前缀(
:w |
)并使用向上箭头键方便地从历史记录中调用它。您可以通过在vim命令行中用管道字符分隔命令来链接命令
:灾难故事/apple pie.txt
Vim将在命令行命令中将%
扩展到当前编辑的文件名。您可以添加一些修改器以不同的方式操作文件名(请参见手册中的)。例如,%:t
是文件名的尾部(最后一个组件);如果%
给出recipes/apple pie.txt
,那么%:t
给出apple pie.txt
:w|e灾难故事/%:t
通常,当我想做这类事情时,我不需要定制密钥绑定。如果您最近使用过这样的命令,您可以键入它的前缀(
:w |
)并使用向上箭头键方便地从历史记录中调用它。我想您想了解一下vim中的缓冲区管理。一旦这两个文件都作为缓冲区加载,您可能可以使用:b appl
在它们之间切换。当然,如果同时编辑10个Makefiles,这就不能很好地扩展。我想您应该去了解vim中的缓冲区管理。一旦两个文件都作为缓冲区加载,您可能可以使用:b appl
在它们之间切换。当然,如果您同时编辑10个Makefiles,这将无法很好地扩展。感谢您提供这些链接。您的解决方案是否允许我避免每次键入文件名?感谢您提供这些链接。您的解决方案是否允许我避免每次键入文件名?谢谢!我不想成为一个讨厌的人,但你可以简单地解释一下它是如何工作的?谢谢!我不想成为一个害虫,但你可以简单地解释一下它是如何工作的?+1我不知道
或%t
。非常感谢。这似乎是一个非常好的解决方案,不管它是单个命令。+1我不知道
还是