我知道这是初学者的问题!!我们假设我们有两个目录:
recipes/
apple-pie.txt
blueberry-muffin.txt
disaster-stories/
apple-pie.txt
blueberry-muffin.txt
我们还假设Vim的当前目录设置为recipes/
和disaster-stories/
的父目录。
问题:
如果我正在编辑recipes/apple-pie.txt
,我希望能够输入:dsstr
等自定义命令,从而导致保存当前文件并打开disaster-stories/apple-pie.txt
。我怎么能这样做?
答案 0 :(得分:4)
您可以通过在vim命令行中使用竖线字符分隔命令来链接命令。
:w | e disaster-stories/apple-pie.txt
Vim会在命令行命令中将%
扩展为当前编辑的文件名。您可以添加一些修饰符以不同方式操作文件名(请参阅手册中的filename modifiers)。例如,%:t
是文件名的尾部(最后一个组件);如果%
提供recipes/apple-pie.txt
,则%:t
会apple-pie.txt
。
:w | e disaster-stories/%:t
通常当我想做这种事情时,我不打扰自定义键绑定。如果你最近使用过这样的命令,你可以输入它的前缀(:w |
)并使用向上箭头键从历史记录中方便地调用它。
答案 1 :(得分:3)
把它放在你的vimrc上:
command! -bar Dsstr w|exec 'edit '.expand('%:p:h:h').'/disaster-stories/'.expand('%:t')
然后您可以使用:Dsstr
更改为该文件。
这根本不灵活,但我不确定你需要什么,所以我不能再进一步了。
EDIT 现在是一个简短的描述,指向Vim的帮助以获取更多细节:
command!
:创建一个命令并覆盖它(如果存在)。 :help:command -bar
:允许|连接命令。 :h:命令栏Dsstr
:用户命令必须以大写字母开头。w|
:写入,然后执行下一个命令。 :h:bar exec
:以ex命令执行参数。 :h:执行expand()
:请参阅:h expand()答案 2 :(得分:1)
:w | ! scriptName
!告诉vim运行“cd”或“ls”等命令。
制作shell脚本的步骤:
-CD
-mkdir bin(如果bin中还没有bin)
-cd bin< - 你想在〜/ bin中创建脚本,以便linux可以找到它
-vim nameOfScript(这是你要输入的命令来运行命令。例如,如果你将其命名为“vimScript”,它会运行你键入的“vimScript”。理想情况下你会想要使用像“vc”这样简短的东西(vim)改变)
- 输入以下文字:
#!/斌/庆典
vim -c e {)
注意:第一行#!/ bin / bash告诉Unix / Linux这是一个脚本。 vim -c e pathToFile让它运行命令“vim -c e pathToFile”
-save和quit
-chmod + x nameOfscript< -This使脚本可执行
-请享用!您现在可以通过键入以下内容保存文件并移至下一个文件:
:w | ! nameOfScript
注意事项:这只适用于一种方式。您需要编写两个单独的命令,一个用于切换到一个文件,一个用于切换到另一个,或者在脚本上添加更多命令。添加更多内容将是最好的方法,因为它可以让您以后更轻松地添加更多文件。
另外,我建议备份这两个文件,以防万一你在创建脚本时出错。
如果您有任何疑问,请询问!下面还有一些链接:
以下是编写shell脚本的一些链接:
http://linuxcommand.org/wss0010.php
http://linuxcommand.org/writing_shell_scripts.php
http://www.freeos.com/guides/lsst/
此外,这两个链接在未来可能会有所帮助:
http://vimhelp.appspot.com/vim_faq.txt.html
http://vim.wikia.com/wiki/Vim_Tips_Wiki
答案 3 :(得分:0)
我想你想了解vim中的缓冲区管理。将两个文件作为缓冲区加载后,您可以使用:b appl<tab>
在它们之间切换。当然,如果您同时编辑10个Makefile,则不能很好地扩展。