seleziona solo testo incollato


6

Abbastanza semplice: come si può selezionare il testo appena incollato (dopo averlo incollato)?

Sto modificando alcuni file che sono puramente dati, e a volte vengo "perso" ... quindi sarebbe utile se potessi selezionarlo o in qualche modo segnare in altro modo il testo che ho appena incollato per avere una conferma visuale, e per sapere da dove continuare.

Può essere fatto?


hai visto la mia modifica?
asdfg

@nsharish - no, mi dispiace. l'ho visto solo ora.
Rook

Risposte:


1

Hai provato 'Gv' in modalità normale ...
In realtà non seleziona l'ultimo testo incollato ...
Seleziona l'ultimo testo selezionato ..
modificare:

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

Questo potrebbe aiutarti .. Aggiungi questo al tuo file vimrc.
Qui ho rimappato 'y' (yank) e 'p' (incolla) in modo tale che, la posizione del cursore viene salvata per ogni copia e incolla. Puoi usare '; per scorrere le posizioni. Non seleziona il testo incollato ma ti porta nelle posizioni in cui hai incollato il testo. Per ogni nuova copia il buffer (una lista) viene cancellato.

Ho limitato il buffer a 50. Puoi rimuovere la sezione se non necessario.


Sì, ma in realtà non funziona in questo caso.
Rook

3

può essere:

m'gpv''

come in:

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

1
credo gp ("Proprio come" p ", ma lascia il cursore subito dopo il nuovo testo.") Potrebbe semplificare le cose semplicemente m'gpv''. Avvolgilo in una mappatura per facilità di accesso. Il problema degli OP viene quindi risolto con annulla e ri-incolla con questo metodo.
Chris Johnsen

@ schris: giusto, meglio.
akira

2

Annulla quindi Ripristina. Non seleziona il testo ma ti dice dove si trovava la modifica. Se hai apportato qualche altra modifica dopo aver incollato ... c'è sempre un annullamento multiplo.


So dove si trovava un lato della pasta (il cursore è lì, o la linea di cursore) ma che dire dell'altra? Dove finisce la pasta?
Rook

@ldigas re-incollando via Shift+Insert al posto di Ripeti posiziona il cursore alla fine (e uccide ulteriori Redo). Altrimenti potresti scrivere uno script vim che contava i caratteri nel registro appunti / vim e spostava il cursore di quella cifra.
Hugh Allen

1

Bene, è ancora nei tuoi appunti, pronto per essere incollato. Se ti perdi, potresti fare un altro incolla su un file di testo vuoto e vedere dove ti trovavi da ciò che è stato incollato.


No, penso che tu abbia frainteso. Ad esempio, ho un file pieno di punti x, y, z. Ora, incollo alcune coordinate nel mezzo di quelle già esistenti, gira la testa e ... non so più dove sono appena incollato. Quindi, per esempio, aiuterebbe a mantenere la selezione solo su quelli. Come aiuto visivo.
Rook

Sì, ho frainteso. Anche questo è un problema, e non conosco la soluzione. Quindi inviterò la tua domanda, perché mi piacerebbe saperlo anche io.
thursdaysgeek

Il modo brutto sarebbe fare una ricerca sul file e incollare il testo nella casella di ricerca. Sarebbe più bello se rimanesse evidenziato fino a quando non hai incollato qualcos'altro.
thursdaysgeek

Oh, okey. Sì, la ricerca potrebbe funzionare ... ma sono tutti numeri ... non qualcosa che riesco a ricordare (non penso a loro, basta posizionarli dove devono essere ...).
Rook

1

incolla v '' (cioè, incolla il testo, v, virgoletta singola due volte). sembra selezionare ciò che è stato appena incollato, in gvim73 su windows.


0

Puoi selezionare solo il testo incollato usando la seguente mappatura:

nnoremap <expr> gp '`[' . getregtype()[0] . '`]'

Trovato su COSÌ . Qui ha anche alcuni dati aggiuntivi su come funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.