选择刚刚粘贴的文本

选择刚刚粘贴的文本

很简单 - 如何选择刚粘贴的文本(粘贴后)?

我正在编辑一些纯数据文件,有时会“迷失”……所以如果我可以选择它或以其他方式标记我刚刚粘贴的文本以便进行视觉确认并知道从哪里继续,这将会有所帮助。

可以做到吗?

答案1

你试过了吗‘gv’在正常模式下...
它实际上并没有选择最后粘贴的文本...
它选择最后选择的文本..
编辑:

nmap p :call Paster()<CR> 
nmap '; :call LastPasted()<CR>
nmap y :call ClearList()<CR>

let s:linelist=[]
let s:lastidx=len(s:linelist)
if !exists("*Paster")
    function! Paster()
        let x=getpos(".")
        let s:linelist+=[x]
        let s:lastidx=len(s:linelist)
        if s:lastidx>50
            remove(s:linelist,0)
            let s:lastidx-=1
        endif
        "echo s:linelist
        exec "normal! \"0gp"
    endfunction
endif
if !exists("*LastPasted")
    function! LastPasted()
        if s:lastidx>0
            let s:lastidx=s:lastidx-1
        else
            let s:lastidx=len(s:linelist)-1
        endif
        let pos=s:linelist[s:lastidx-1]
        call setpos(".",pos)
    endfunction
endif
if !exists("*ClearList")
    function! ClearList()
        let s:linelist=[getpos(".")]
        let s:lastidx=0
        exec "normal! :y\<CR>"
    endfunction
endif

这可能会对你有所帮助。将其添加到你的 vimrc 文件中。
在这里我重新映射了 'y'(复制)和 'p'(粘贴),这样每次复制和粘贴时都会保存光标位置。你可以使用';循环遍历各个位置。它不会选择粘贴的文本,而是将您带到粘贴文本的位置。对于每个新副本,缓冲区(列表)都会被清除。

我只是将缓冲区大小限制为 50。如果不需要,您可以删除该部分。

答案2

或许:

m'gpv''

例如:

m'                " set the 'context' mark
gp                " paste the stuff and place the cursor after the
                  " new text
v                 " visual mode
''                " jump to the 'context' mark and selecting
                    the previous pasted text

答案3

撤消然后重做。不选择文本,但会告诉您更改的位置。如果您在粘贴后进行了其他编辑...总是有多个撤消。

答案4

粘贴 v''(即粘贴文本,v,单引号两次)。在 Windows 上的 gvim73 中,似乎选择了刚刚粘贴的内容。

相关内容