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

时间:2013-08-18 12:00:12

标签: vim

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

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

但这不起作用。

请告诉我为什么这不起作用并帮助我实现这一目标。

1 个答案:

答案 0 :(得分:5)

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

noremapmap

这会创建一个非递归映射。见Wikia - Mappings keys in Vim

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

updatewrite

如果有实际更改,则仅保存文件。请参阅::help :update

<bar>|

:help map_bar

<c-u>

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

最后

<cr>

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