[英]How do I get Vim to highlight YAML mapping key when it contains a space?
[英]count of command get lost when do key mapping in vim
我的 vimrc 文件中有一个p
的键映射,如下所示:
noremap p <ESC>:set paste<CR>p:set nopaste<CR>
此键映射的目的是确保 vim 外部的内容可以在粘贴模式下以其原始格式粘贴。 并在粘贴完成后将其恢复为 nopaste 模式。
但是当我运行以下命令时:
yy
5p
p
只执行一次,而不是 5 次。
看起来键映射中缺少计数。
有什么方法可以在键映射中传递计数?
或者如何解决这个问题?
第一个<ESC>
删除计数,因此以后不可用。 而不是<ESC>
我们将忽略并使用<cu>
保存计数,稍后使用v:count1
变量访问它,例如:<cu>set paste <CR>... v:count1...
。
但是还有另一个问题:在第一个<CR>
之后 count 会丢失,所以我们想将映射重写为单个命令。 命令链可以用|
, 但在映射中我们应该写<BAR>
而不是|
.
这是最终的映射:
:noremap p :<c-u>set paste <BAR> :exe "normal! " . v:count1 . "p" <BAR> :set nopaste<CR>
:exe "normal! "
是一种从评估字符串执行命令的奇特方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.