我的.vimrc中有这个命令:
vip:normal @g<CR>
Run Code Online (Sandbox Code Playgroud)
当我通过键入缓冲区来设置寄存器'g'时,它会起作用:
qg<CR>jq
Run Code Online (Sandbox Code Playgroud)
如果我输入:register,它显示:
--- Registers ---
"g ^Mj
Run Code Online (Sandbox Code Playgroud)
之后,键入@g会导致回车,然后光标移动到下一行.^ M以特殊颜色显示.
但是,当我在我的vimrc中使用setreg命令时,如果我输入@g,则没有任何反应.
call setreg('g','^Mj')
Run Code Online (Sandbox Code Playgroud)
如果我输入:register,它显示:
--- Registers ---
"g ^Mj
Run Code Online (Sandbox Code Playgroud)
^ M不是特殊颜色.
我的.vimrc中有以下内容:
map <CR> :call MyFunction<CR>
Run Code Online (Sandbox Code Playgroud)
我想要存储在寄存器中的回车是运行MyFunction.只要我手动填充缓冲区而不是使用setreg,MyFunction就会被完美地调用.
我哪里出错了?我的平台是Linux.
我正在考虑将寄存器设置为相同的通用编码技术.例如,我正在考虑这样做:
:let @i = "int i=0;"
Run Code Online (Sandbox Code Playgroud)
然后我会f为for循环,wwhile循环等设置.这是一个糟糕的技术还是有更好的方法这样做?
我想在一个给定寄存器中拉出缓冲区的所有匹配行.我选择"A
:g/<match>/y A
Run Code Online (Sandbox Code Playgroud)
为我做了这个伎俩.我猜
"Ap
Run Code Online (Sandbox Code Playgroud)
是粘贴A的内容的命令,我得到了我的匹配线加上旧线,尝试清除A使用
:let @A=''
Run Code Online (Sandbox Code Playgroud)
但仍然能够使用"Ap.我做错了什么?
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Oct 16 2013 20:39:23)
MS-Windows 64-bit GUI version with OLE support
Included patches: 1-52
Run Code Online (Sandbox Code Playgroud) 我正在搜索vim脚本来清除vim中的寄存器,我找到了这个有用的脚本
现在我插入带有函数的代码并将其放入我的.vimrc文件中
function ClearReg()
let regs='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-"'
let i=0
while (i<strlen(regs))
exec 'let @'.regs[i].'=""'
let i=i+1
endwhile
unlet regs
endfunction
Run Code Online (Sandbox Code Playgroud)
我的问题是
1.是创建函数并将其放在.vimrc文件中的正确方法吗?
2.如果我想使用这个脚本作为插件,我应该把这个脚本添加到哪个路径?
给定foo文本中的单词,如果我ciwbar<ESC>在w注册时将其作为宏进行输入,然后在命令行中键入
:<C-r>w它将带给我:ciwbar^[
但是如果我输入:<C-r>.它只会带给我bar
但是这两个命令,@w和dot,能够在我的文本的其他部分执行更改内部单词栏
当我拿到w注册表时,有没有办法从点中获取所有内容?我想粘贴它并在前面的一些步骤中自动执行宏中的最后一个命令