映射:w(保存)并调用一个.sh文件到VIM中的F2



我想在VIM中映射F2,这样它首先用:w保存文件,然后调用脚本/home/user/proj/script.sh,将更改后的文件上传到服务器。我已经试过了

:map F2 :w<cr>|:! /home/user/proj/script.sh

但这行不通。

请告诉我为什么这不起作用,并帮助我让它起作用。

尝试:noremap <F2> :<c-u>update <bar> !/home/user/proj/script.sh<cr>

noremapmap

这将创建一个非递归映射。参见Wikia-Vim 中的映射密钥

我只是假设了这一点,因为这是人们大多数时候想要的。:-)

updatewrite

只有在发生实际更改时才保存文件。参见::help :update

<bar>|

:help map_bar

<c-u>

您使用了一个通用映射,而不是一个用于特定模式的映射,如用于普通模式映射的nmap。因此,映射也可以在视觉模式中被触发。如果您在视觉模式下选择某个内容并点击:,您将看到命令行以范围为前缀。但您不希望这种情况发生,<c-u>会清除命令行。

<cr>在最后

您的映射将进入命令行模式,并插入由<bar>分隔的两个内容。之后,它必须执行它所写的内容,因此您需要附加一个<cr>

最新更新