维姆:一边救一边跑?

2024-04-27 04:12:25 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

好吧,你要找的最简单的形式就是pipe命令。它允许您在同一行上运行多个命令行。在您的例子中,这两个命令是write`w`和execute current file`!%:p`。如果有为当前文件运行的特定命令,则第二个命令将变为,例如`!python%:p`。所以,最简单的回答就是:

:w | ! %:p
 ^ ^ ^
 | | |--Execute current file
 | |--Chain two commands
 |--Save current file

最后要注意的是,并不是所有的命令都可以被链接。根据Vim docs,某些命令接受管道作为参数,从而断开链。。。

使用autowrite选项:

:set autowrite

Write the contents of the file, if it has been modified, on each :next, :rewind, :last, :first, :previous, :stop, :suspend, :tag, :!, :make, CTRL-] and CTRL-^ command [...]

选项1:

编写类似的函数并将其放入启动设置中:

function myex()
   execute ':w'
   execute ':!!'
endfunction

你甚至可以将一个键组合映射到它——看看文档。


选项2(更好):

请参阅用于重新映射击键的文档-您可以通过简单的密钥重新映射来完成它。下面的代码有效,但有“filename.py”硬编码。也许您可以深入研究并找出如何用当前文件替换它?

:map <F2> <Esc>:w<CR>:!filename.py<CR>

映射之后,您可以在命令模式下按F2键。

imap、vmap等。。。是不同模式的映射。以上仅适用于命令模式。以下内容也应在插入模式下工作:

:imap <F2> <Esc>:w<CR>:!filename.py<CR>a

VIM手册的第40.1节非常有用。

相关问题 更多 >