1

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

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

但这不起作用。

请告诉我为什么这不起作用并帮助我使其正常工作。

4

1 回答 1

5

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

noremap对比map

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

我只是假设这一点,因为这是人们大部分时间想要的。:-)

update对比write

仅在有实际更改时才保存文件。见::help :update

<bar>对比|

:help map_bar

<c-u>?

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

<cr>在最后?

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

于 2013-08-18T12:07:24.383 回答