2017-09-25 74 views
1

當我進入寄存器時,我經常錯誤輸入"x語法,所以我想確認它使用哪個寄存器來抽取文本。打印關於Vim報告中使用的寄存器的信息

例如,如果我輸入"x3yy,我的理想輸出將是「3行被抽出到x中」而不是當前的「3行被抽出」。是否有可能以某種方式修改此報告?理想情況下,它也可以用於刪除等。

回答

3

在最近的Vim版本中已經解決了這個問題,從版本8.0.0724開始:對於yanking的消息並不表示寄存器

一旦你升級(無論是等待,直到一個包爲您的操作系統是可用的,或編譯的Vim自己),對例如"a4yy將消息:

4 lines yanked into "a 
2

此功能被添加到修補程序後8.0.0724(Ingo Karkat報告它的榮譽)。

Neovim截至目前還沒有合併這個補丁。然而,它實現了TextYankPost,它允許你破解類似的行爲,因爲它提供了操作類型,使用的寄存器和複製到寄存器的內容。

考慮到這,下面的代碼片段會做你所要求的:

function! s:better_operator_message() 
    let number = len(v:event['regcontents']) 

    if v:event['operator'] == 'c' || v:event['operator'] == 'd' 
    let message = number . ' fewer lines' 
    elseif v:event['operator'] == 'y' 
    let message = number . ' lines yanked' 
    else 
    return 
    endif 

    if v:event['regname'] != '' 
    let message = message . ' into register ' . v:event['regname'] 
    endif 

    echom message 
endfunction 

set report=10000000000 
augroup better_operator_message 
    autocmd! 
    autocmd TextYankPost * call <sid>better_operator_message() 
augroup end 

我做了這個片段可作爲plugin,如果你有興趣。

+0

我見。我認爲它可能是不會被支持的情況。我將把它添加到切換到Neovim的可能的好處列表中;)謝謝! –