如何将关键 nmap 推迟到 vim 中的默认映射

How to postpone a key nmap to its default mapping in vim

如何在 .cpp 中提取 方法,然后在 .h 文件中 粘贴 时,删除 MyFooClass:: 来自被抽出的文本。

示例:

file.cpp:

bool MyFooClass::myFooPrivateMethod()

在file.h中粘贴时,我想要:

file.h

class MyFooClass{
...
   bool myFooPrivateMethod();
...

如何在 cpp 中 nmap p 删除 ::MyFooClass 并将 { 更改为 ;

事情是这样的。我需要根据目的地更改粘贴行为。如何处理被抽出的文本并推迟默认 p paste

  1. 找出目标文件
  2. nmap p 到一个函数,其中 MyFooClass(内部 reg '"' 被删除)
  3. 推迟将 reg '"' 更改为正常 p 行为。

您可以使用表达式映射和自动命令来完成此操作:

autocmd BufRead *.h nnoremap <expr> p v:register != '=' && getreg(v:register) =~ '\w\+\s\+\w\+::\w\+([^)]*)' ? ":pu=substitute(getreg(v:register), '\(\w\+\)\s\+\w\+::\(\w\+([^)]*)\).*', '\1 \2;', '')\<cr>\<cr>-" : 'p'

我将保留映射所有 Vim 的其他 put/paste(PgpgP]p[p, ...) 命令作为 reader.

的练习

我个人认为这最好作为 Vim 命令,例如:PutHeader 或其他生成头文件的方法。