È possibile incollare in modalità inserimento in Vim?
È possibile incollare in modalità inserimento in Vim?
Risposte:
Mentre si è in modalità inserimento, premere CTRL-R {register}
Esempi:
CTRL-R * inserirà nel contenuto degli appunti CTRL-R " (il registro senza nome) inserisce l'ultima cancellazione o yank. Per trovare questo nel tipo di aiuto di vim :h i_ctrl-r
CTRL-R *funziona solo in GVIM o versioni compilate per interagire con x. Digita vim --versione cerca +xterm_clipboard. Se non lo possiedi, hai bisogno di una versione diversa di vim. ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
+clipboard, ma se +xterm_clipboardhai dovresti averlo comunque. Su alcuni sistemi operativi xterm_clipboardnon è applicabile.
*registrati è pastable con il tasto centrale del mouse mentre +è il tradizionale copia / incolla. standards.freedesktop.org/clipboards-spec/clipboards-latest.txt
Se non si desidera Vim manipolare la formattazione in incoming testo incollato, si potrebbe anche voler considerare l'utilizzo: :set paste. Ciò impedirà a Vim di ripetere la tabulazione del codice. Al termine dell'incollaggio, :set nopastetornerà al comportamento normale.
È anche possibile attivare / disattivare la modalità con un solo tasto, aggiungendo qualcosa di simile set pastetoggle=<F2>al tuo .vimrc. Maggiori dettagli sull'attivazione del rientro automatico sono disponibili qui .
:set nopastedisabiliterà la modalità incolla
:set paste!probabilmente impostare incolla molto vicino nella cronologia dei comandi, quindi puoi semplicemente premere ':', quindi freccia in su e aggiungere un '!'.
:set paste! Grazie :)
!alla fine del comando in vimattiva e disattiva il comando. In questo modo non è necessario digitare :set nopasteinvece è possibile scorrere la cronologia verso l'alto ed eseguire di nuovo lo stesso comando ( :set paste!).
No non direttamente. Quello che puoi fare è uscire rapidamente dalla modalità di inserimento per una singola operazione in modalità normale con Ctrl-Oe quindi incollare da lì che terminerà riportandoti in modalità di inserimento.
Combo chiave: Ctrl-O p
EDIT: interessante. Sembra che ci sia un modo come molte altre persone hanno elencato.
esc + p?
esc + p + ie sicuramente più facile da digitare diCTRL-R + "
CTRL-R ". Ad esempio, sebbene le impostazioni di vimrc possano cambiare questa situazione, incollare qualcosa in una nuova riga usando CTRL-O pfa sparire il suo rientro.
In modalità inserimento, è possibile utilizzare Ctrl-R {register}, dove può essere registrato :
+ per gli appunti,* per gli Appunti X (ultimo testo selezionato in X), " per il registro senza nome (ultima cancellazione o yank in Vim),:h registers).Ctrl-R {register} inserisce il testo come se fosse stato digitato.
Ctrl-R Ctrl-O {register} inserisce il testo con il rientro originale.
Ctrl-R Ctrl-P {register} inserisce il testo e lo rientra automaticamente.
Ctrl-Opuò essere utilizzato per eseguire qualsiasi comando in modalità normale prima di tornare alla modalità di inserimento, quindi
Ctrl-O "+ppuò essere utilizzato, ad esempio.
Per ulteriori informazioni, consultare la documentazione con :h i_ctrl-r
Puoi usarlo per incollare dagli appunti con Ctrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
E questo per trascinare la selezione visiva negli appunti con Ctrlc:
vnoremap <C-c> "+y
Se vuoi anche usare gli appunti di default per il classico vim yanking / incolling ( y/ p) in modalità normale, ecco un'opzione di configurazione che lo fa:
set clipboard=unnamedplus
Con queste configurazioni puoi ad esempio eseguire prima lo yank in modalità normale e poi incollarlo con Ctrlvin modalità insert. Inoltre, puoi incollare testo da diverse istanze vim e diverse applicazioni.
Un'altra opzione è:
set clipboard=unnamed
Quindi sarai in grado di selezionare qualcosa semplicemente trascinando il mouse nel tuo ambiente X e incollarlo in vim in seguito. Ma (per qualche ragione) non sarai in grado di strappare qualcosa ( y) in Vim e shiftinsertda qualche altra parte in seguito, il che è probabilmente abbastanza limitante.
Vim documenti a riguardo: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Per incollare dai registri personalizzati puoi seguire le altre risposte :). Questa risposta riguarda principalmente l'integrazione di Vim con gli Appunti di sistema.
Nota che per set clipboard=unnamedpluse set clipboard=unnamedper funzionare, devi usare gvim o vimx ( vim-X11): sono compilati con +xterm_clipboard. Puoi opzionalmente metterlo nel tuo .bashrcalias vimcon vimx:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
Puoi scoprire se il tuo VIM ha o meno +xterm_clipboardle informazioni fornite da vim --version.
:set pastee bizantino <leader><leader> * yè persino desiderabile da remoto? Per non sembrare troppo impegnato, sono sinceramente curioso di sapere quale filosofia vim questo rifletta, o se è solo una sfortuna storica.
inoremap <S-Insert> <F12><C-r>+<F12>(io uso F12 come pastetoggle). Grazie.
Se imposti Vim per utilizzare gli Appunti di sistema ( :set clipboard=unnamed), qualsiasi testo copiato in Vim può essere incollato usando Shift+ Insert. Shift+ Insertè semplicemente una combinazione di tasti incolla a livello di sistema operativo ( Ctrl+ Insertè la 'copia' corrispondente).
pincollare il testo negli appunti?
Shift + Insertper incollare il testo, dobbiamo essere nella modalità di inserimento.
Puoi anche utilizzare il pulsante centrale del mouse per incollare in modalità inserimento (solo Linux).
È possibile accedere alla -- INSERT (past) --modalità tramite:
o
:set pastee accedendo alla modalità di inserimento ( :set nopasteper disabilitare)una volta in -- INSERT (past) --modalità, utilizza semplicemente la funzione incolla dei tuoi sistemi (ad es. CtrlShiftvsu Linux, Cmdvsu Mac OS).
Questa strategia è molto utile quando si utilizza vim su ssh.
Sì. In Windows Ctrl+ Ve Linux premendo entrambi i pulsanti del mouse quasi contemporaneamente.
In Windows penso che questa riga nel mio _vimrc probabilmente lo faccia:
source $VIMRUNTIME/mswin.vim
In Linux non ricordo come l'ho fatto. Sembra che probabilmente abbia eliminato alcune righe dal file .vimrc predefinito.
Una mappa personalizzata sembra appropriata in questo caso. Questo è quello che uso per incollare oggetti strappati in modalità inserimento:
inoremap <Leader>p <ESC>pa
La mia Leaderchiave qui è \; questo significa che colpire \pin modalità inserimento incolla gli oggetti / le linee precedentemente strappati.
Aggiungi la mappa:
" ~/.vimrc
inoremap <c-p> <c-r>*
riavvia vim e quando premi Crtl+pin modalità insert, il testo copiato verrà incollato