有沒有辦法在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