In Vim, qual è il modo migliore per selezionare, eliminare o commentare grandi porzioni di testo multischermo?

StackOverflow https://stackoverflow.com/questions/58584

  •  09-06-2019
  •  | 
  •  

Domanda

Selezionare una grande quantità di testo che si estende su molti schermi in un IDE come Eclipse è abbastanza semplice poiché puoi utilizzare il mouse, ma qual è il modo migliore per, ad es.selezionare ed eliminare blocchi di testo multischermo o scrivere ad es.tre metodi di grandi dimensioni in un altro file e quindi eliminarli a scopo di test in Vim quando lo si utilizza tramite putty/ssh dove non è possibile utilizzare il mouse?

Posso facilmente trascinare fino alla fine della riga o trascinare fino alla fine del blocco di codice, ma se il testo si estende su molti schermi o contiene molte righe vuote, mi sento come se il mio le mani sono legate in Vim.Qualche soluzione?

E una domanda correlata:c'è un modo per selezionare in qualche modo 40 righe e poi commentarle tutte (con "#" o "//"), come è comune nella maggior parte degli IDE?

È stato utile?

Soluzione

Bene, prima di tutto, puoi impostare vim per lavorare con il mouse, il che ti consentirebbe di selezionare il testo proprio come faresti in Eclipse.

Puoi anche utilizzare la selezione visiva - v, per impostazione predefinita.Una volta selezionato, puoi yank, cut, eccetera.

Per quanto riguarda il commento del blocco, di solito lo seleziono con VISUAL, Quindi fa

:'<,'>s/^/# /

Sostituendo l'inizio di ogni riga con a #.(IL '< E '> i marcatori sono l'inizio e la selezione visiva.

Altri suggerimenti

Usa i marcatori.

Vai all'inizio del blocco di testo che desideri eliminare e inseriscilo

ma

ovunque su quella linea.Non c'è bisogno del colon.

Quindi vai alla fine del blocco e inserisci quanto segue:

:'a,.d

Entrando ma ha impostato il marcatore a per il carattere sotto il cursore.

Il comando che hai inserito dopo esserti spostato alla fine del blocco di testo dice "dalla riga contenente il carattere descritto dal marcatore a ('UN) alla riga corrente (.) dele."

Questo genere di cose può essere utilizzato anche per altre cose.

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

N.B. 'a (apostrofo-a) si riferisce alla riga contenente il carattere contrassegnato da a."a(backtick-a) refers to the character marked byun`.

Per inserire commenti selezionare i caratteri iniziali delle righe utilizzando CTRL-v (visivo a blocchi, non visivo a caratteri "v" o visivo a linee "V").Quindi vai alla modalità di inserimento usando 'I', inserisci i tuoi caratteri di commento sulla prima riga (ad esempio '#') e infine torna alla modalità normale usando 'Esc'.Ecco!

Per rimuovere i commenti utilizzare blockwise-visual per selezionare i commenti ed eliminarli semplicemente utilizzando 'X'.

Utilizza il comando di blocco visivo v (o V per righe intere e C-V per blocchi rettangolari).In modalità blocco visivo, puoi utilizzare qualsiasi comando di movimento inclusa la ricerca;Utilizzo spesso } per passare alla riga vuota successiva.Una volta contrassegnato il blocco, puoi spostarlo in un file, eliminarlo, strapparlo o altro.Se esegui un comando e il blocco visivo scompare, seleziona nuovamente lo stesso blocco con gv.Vedi :help visual-change per ulteriori informazioni.

Penso che ci siano script specifici della lingua forniti con Vim che fanno cose come commentare blocchi di codice in un modo che si adatta alla tua lingua preferita.

Premere V (V maiuscola) e quindi premere 40j per selezionare 40 linee e quindi premere d per eliminarli.Oppure, come ha risposto @zigdon, puoi commentarli.

La modalità visiva è la soluzione al tuo problema principale.Per quanto riguarda il commento di sezioni di codice, ci sono molti plugin su vim.org, al momento sto usando tComment.vim.

C'è anche un modo semplice per commentare un blocco senza plugin.Diciamo che lavori in Python e # è il carattere del commento.Effettua una selezione visiva del blocco della colonna in cui desideri inserire il simbolo del cancelletto e digita I#ESCAPE.Per accedere alla modalità di blocco visivo, premere C-q su Windows o C-v su Linux.

Oppure potresti provare questo script...

http://www.vim.org/scripts/script.php?script_id=23

La mia tecnica di blocco dei commenti:

Ctrl+V per avviare la modalità visiva a blocchi.

Fai la tua selezione.

Con la selezione ancora attiva, Spostare+IO.Questo ti mette in modalità di inserimento colonna.

Digita i caratteri del commento '#' o '//' o altro.

ESC.

Se vuoi eseguire un'azione su un intervallo di righe e conosci i numeri di riga, puoi inserire l'intervallo nella riga di comando.Ad esempio, per eliminare le righe da 20 a 200 puoi fare:

:20,200d

Per spostare le righe da 20 a 200 dove si trova la riga 300 è possibile utilizzare:

:20,200m300

E così via.

Per commentare le righe, suggerirei uno di questi plugin:

MiglioratoCommenta

Commentatore NERD

Mi ritrovo a usare di più NERD in questi giorni, ma uso EnhancedCommentify da anni.

Utilizzo Spostare+V per andare in modalità visiva, quindi puoi selezionare le righe ed eliminarle/modificarle.

Il mio metodo abituale per commentare 40 righe sarebbe posizionare il cursore sulla prima riga e inserire il comando:

:.,+40s/^/# /

(Per qui a 40 righe in avanti, sostituire la start-of-line con hash, spazio) sembra un po 'più lungo di alcuni altri metodi suggeriti, ma mi piace fare le cose con la tastiera anziché con il mouse.

La prima risposta al momento non è del tutto corretta?Per commentare la selezione premi ':' e digita comando: '<,'> s/^/#/g

('<, '> - sarà presente automaticamente)

Dovresti essere a conoscenza del comando in modalità normale [count]CTRL-D.Facoltativamente modifica l'opzione 'scroll' da 10 a [count], quindi scorre verso il basso di quel numero di righe.Premendo CTRL-D scorrerà nuovamente verso il basso le stesse righe.

Quindi prova ad entrare

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

CTRL-U funziona allo stesso modo ma scorre verso l'alto.

v entra nella modalità blocco visivo, dove puoi selezionare come con lo spostamento negli editor più comuni, in seguito puoi fare tutto ciò che puoi fare normalmente con i normali comandi (sostituzione :'<,'>s/^/#/ per anteporre un commento , ad esempio) dove '<,'> indica il blocco visivo selezionato anziché tutto il testo.

i segni sarebbero la cosa più semplice mb dove vuoi iniziare e Me dove vuoi finire, una volta fatto questo puoi fare praticamente tutto quello che vuoi

:'b,'ed

elimina dal marcatore B al marcatore e

commentando 40 righe puoi farlo in modalità visiva

V40j:s/^/#/

commenterà 40 righe da dove inizi la sequenza

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top