如何将关键 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
- 找出目标文件
- nmap p 到一个函数,其中
MyFooClass
(内部 reg '"' 被删除)
- 推迟将 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(P
、gp
、gP
、]p
、[p
, ...) 命令作为 reader.
的练习
我个人认为这最好作为 Vim 命令,例如:PutHeader
或其他生成头文件的方法。
如何在 .cpp 中提取 方法,然后在 .h 文件中 粘贴 时,删除 MyFooClass::
来自被抽出的文本。
示例:
file.cpp:
bool MyFooClass::myFooPrivateMethod()
在file.h中粘贴时,我想要:
file.h
class MyFooClass{
...
bool myFooPrivateMethod();
...
如何在 cpp 中 nmap p
删除 ::MyFooClass
并将 {
更改为 ;
。
事情是这样的。我需要根据目的地更改粘贴行为。如何处理被抽出的文本并推迟默认 p paste
- 找出目标文件
- nmap p 到一个函数,其中
MyFooClass
(内部 reg '"' 被删除) - 推迟将 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(P
、gp
、gP
、]p
、[p
, ...) 命令作为 reader.
我个人认为这最好作为 Vim 命令,例如:PutHeader
或其他生成头文件的方法。