有没有办法在Vim中持久地改变活动寄存器?在Vim中持久地设置活动寄存器
"
寄存器默认情况下使用,如果我想要使用a
寄存器,我必须将"a
加到我的正常模式命令。发出命令后,活动寄存器被切换回"
。
有没有办法告诉Vim保持一个特定的寄存器激活,直到明确告诉不这样做?
有没有办法在Vim中持久地改变活动寄存器?在Vim中持久地设置活动寄存器
"
寄存器默认情况下使用,如果我想要使用a
寄存器,我必须将"a
加到我的正常模式命令。发出命令后,活动寄存器被切换回"
。
有没有办法告诉Vim保持一个特定的寄存器激活,直到明确告诉不这样做?
没有这样的选择来实现你的目标。
您可以根据自己的需求阅读和更改vim源代码。
这也是不容易Vimscript中,我能想到的实现:
a
d D s S c C y Y p P ...
命令,让他们在你的函数调用你的函数"[targetReg]command
或致电set/getreg()
但是我不知道认为这是一个好主意。你必须考虑许多角落案例,以使你的脚本适用于所有情况。例如,用户按"_dd
或"bx
,你的脚本应该知道用户已经明确地声明了他想要使用哪个寄存器,并且你应该绕过你的目标变量。
所以只需使用默认的未命名的reg。
如果目标仅仅是追加到"
,这些功能和映射应该适用于视觉和操作待定(例如$
,w
,fx
,等...)。
function! AppOp(type, ...)
call App(a:type, a:0)
endfunction
function! App(type, visual)
let r = @"
if a:visual
execute "normal! `<" . a:type . "`>y"
else
execute "normal! `[v`]y"
endif
let @" = r . @"
endfunction
xnoremap <silent> <leader>a :call App(visualmode(), 1)<cr>
nnoremap <silent> <leader>a :set opfunc=AppOp<cr>[email protected]
交换y
为d
删除,而不是使劲。定义映射到品味。
编号无名寄存器有什么问题? – romainl
你想实现什么?你为什么要用“一个而不是标准寄存器?” – flaschenpost
[我不能轻易将内容追加到未命名的注册表中](http://stackoverflow.com/questions/18536511/vim-how-to-append-yanked -text-to-unnamed-register),而使用一个已命名的寄存器很容易, – zool