在vim重新映射中,我如何;捕获“;和再利用“;任何;性格

在vim重新映射中,我如何;捕获“;和再利用“;任何;性格,vim,Vim,在my.vimrc中,我有以下代码,在插入模式下,在行的末尾添加了一个分号,并将光标返回到其原始位置: inoremap <leader><leader>; <C-o>mp<C-o>A;<C-o>`p inoremap;兆帕`P 除任何/所有字符外,我如何执行相同的操作?例如,类似以下伪代码的内容: inoremap <leader><leader><any> <C-o>mp<C

在my.vimrc中,我有以下代码,在插入模式下,在行的末尾添加了一个分号,并将光标返回到其原始位置:

inoremap <leader><leader>; <C-o>mp<C-o>A;<C-o>`p
inoremap;兆帕`P
除任何/所有字符外,我如何执行相同的操作?例如,类似以下伪代码的内容:

inoremap <leader><leader><any> <C-o>mp<C-o>A<any><C-o>`p
inoremap mpA`p
或者使用正则表达式,比如这个伪代码

inoremap <leader><leader>(\w) <C-o>mp<C-o>A$1<C-o>`p
inoremap(\w)mpA$1`p

甚至可以像这样捕获和重用吗?

我认为这正是您想要的:

inoremap <expr> <leader><leader> "<C-o>mp<C-o>A" . (nr2char(getchar())) . "<C-o>`p"
有关这些主题的更多信息,请阅读以下内容:

:help :map-<expr>
:help getchar()
:help nr2char()
:帮助:映射-
:help getchar()
:help nr2char()

注意:
getchar
实际上并不是从映射本身获取的,它只是提示用户输入一个字符,然后插入它。

真不错!谢谢我想你在开始时有一个
n
打字错误(并且忘记了
`p
以返回原始位置)。总之:
inoremap“mpA”。(nr2char(getchar()))。“`p”
。。。提示:你可以通过创建一个函数(
是换行符):
func-WrapDoubleCharQuotes;设cchar=nr2char(getchar());返回'i'.cchar.cchar';endfunc;nnoremap“WrapDoubleCharQuotes()
:help :map-<expr>
:help getchar()
:help nr2char()