Come eliminare i primi pochi caratteri di ogni riga?


Risposte:


28

È ancora più facile! Ancora una volta, usa i comandi rettangolo . Spostati su un angolo del rettangolo che desideri eliminare, premi C-SPCper impostare il segno. Spostati nell'altro angolo del rettangolo e premi C-x r d( delete-rectangle). Ad esempio, spostati sulla prima riga su cui vuoi agire, premi C-ao homeper andare all'inizio della riga, scorri verso il basso sull'ultima riga su cui vuoi agire, per spostarti nell'angolo in basso a destra, quindi per eliminare.C-u number C-fC-x r d

Se l'ultima riga ha meno del numero desiderato di caratteri, potrebbe essere più comodo utilizzare gli angoli in basso a sinistra e in alto a destra. In alternativa, puoi inserire caratteri spazzatura (questo è utile se sia la prima che l'ultima riga sono più brevi).

Puoi usare C-x r kper uccidere il rettangolo, che ti permette di strapparlo ( C-x r y) in un secondo momento (sposta nell'angolo in alto a sinistra del punto in cui vuoi inserirlo).

Puoi anche usare C-x r t( string-rectangle) e inserire una stringa vuota.

I comandi rettangolari si basano sulle posizioni delle colonne. Se vuoi eliminare n caratteri, anziché n colonne (il che fa la differenza con caratteri multi-colonna come le schede), puoi usare la sostituzione di espressioni regolari : sostituisci ^.\{42\}con niente per eliminare i primi 42 caratteri di ogni riga.


3
invece di provare a ricordare tutti i comandi di rettangolo, puoi anche usare Cx spc, invece di C-spc, che trasforma la tua regione in un rettangolo e tutto funziona.
Malabarba,

1
@Malabarba Solo da quando Emacs 24 però. (Scrivendo su una macchina con Emacs 23. Sono ancora molto in giro.)
Gilles 'SO- smetti di essere malvagio'

2
Le mie condoglianze ... :-(
Malabarba,

Questo ha funzionato per me su GNU Emacs 23.4.1 (x86_64-pc-linux-gnu, GTK + Versione 2.24.21) del 25-10-2013 su pimento, modificato da Debian
davidrmcharles

4

Un'altra possibilità: mi piace davvero usare più cursori per attività come questa. Disponibile in package.elvia MELPA, è diventata una parte indispensabile dei miei emacs. Vorrei semplicemente selezionare I said(e possibilmente includere l'interruzione di linea prima di esso), utilizzare M-x mc/mark-all-like-thised essere sulla buona strada. Se si desidera un controllo più accurato, è possibile utilizzare mc/mark-next-like-thiso mc/mark-next-lines.

Le mie combinazioni di tasti:

(use-package multiple-cursors
  :bind (("C->"   . mc/mark-next-like-this)
         ("C-M->" . mc/mark-all-like-this-dwim)))

Emacs Rocks obbligatoria! episodio: http://emacsrocks.com/e13.html


3

Se hai cua-modeabilitato, quindi:

  • C-a per spostarsi all'inizio della riga,
  • C-RET per iniziare il rettangolo,
  • Quindi sposta con i tasti freccia o qualsiasi comando di spostamento di emacs come C-f
  • DEL per eliminare la selezione

Preferisco il cua-modemodo di lavorare, rispetto al rettangolo standard Emacs in cui l'equivalente sarebbe:

  • C-a per spostarsi all'inizio della riga,
  • C-SPC per iniziare il rettangolo,
  • Quindi sposta con i tasti freccia o qualsiasi comando di spostamento di emacs come C-f
  • C-x r d per eliminare la selezione

Il cua-modesalva tre tasti premuti rispetto al rettangolo di standard di Emacs.


3

Per completezza: l'eliminazione dei primi 3 caratteri da ciascuna riga (formalmente: dal punto in poi, o nella regione) può essere effettuata sostituendo regexp ^...(o più in generale:) ^.\{3\}con una stringa vuota.

Spiegazione: in regexen, ^significa "inizio della riga", .significa "qualsiasi carattere" e \{n\}significa " n ripetizioni della cosa prima".

Questo ha un ulteriore vantaggio di essere interattivo (a meno che non si prema !, il che rende query-regexp-replacetutto da ora in poi senza ulteriori domande).


1
Perché i downvotes?
mbork,

0

E un'altra possibilità:

F3C-aC-3C-dC-nF4

registra una macro di tastiera, dicendo sostanzialmente "sposta all'inizio della riga, cancella tre caratteri e passa alla riga successiva". Quindi, è possibile riprodurlo fino alla fine del buffer C-uF4o C-xC-krapplicarlo alle linee nella regione. Questo ha uno svantaggio: si interromperà quando una riga ha meno di 3 caratteri.


-1

Se è solo una linea puoi eseguire lo zap-to-char con Mz supponendo che quel personaggio non venga ripetuto tra il punto e quello che vuoi eliminare fino a. In alcuni casi questo è più veloce della creazione di una regione.

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.