Come rimuovere automaticamente gli spazi vuoti finali in Eclipse?


422

La domanda ha due parti, una delle quali ho già la risposta.

  1. Come rimuovere automaticamente gli spazi vuoti finali dall'intero file che si sta modificando ? -> Risposta: usa il plug-in AnyEdit , che può essere impostato per farlo su qualsiasi salvataggio nel file.
  2. Come rimuovere automaticamente gli spazi vuoti finali solo dalle righe che ho modificato ? -> Questo non lo so e apprezzerei qualsiasi aiuto.

97
Sarei felice se potessi semplicemente convincere Eclipse a smettere di aggiungere spazi vuoti finali che non ho digitato.
divegeek,

5
Non hai bisogno di un plugin. Usa C ++ -> Editor -> Salva azioni. Anche Generale -> Editor -> Editor di testo -> Mostra caratteri spazi bianchi (fai clic su di esso per impostazioni dettagliate) è estremamente utile.
Trass3r,

3
L'azione di salvataggio predefinita non taglia gli spazi bianchi finali nei commenti di Java Doc. Inoltre, è limitato dal fatto che funziona solo su file Java. Abbiamo un sistema di revisione del codice che contrassegna tutti gli spazi bianchi finali come errori. AnyEdit è prezioso per occuparsi degli spazi bianchi finali per tutti i tipi di file. Inoltre, potrebbe essere utile trovare quali restrizioni ha la tua azienda per i software di terze parti. Il plug-in AnyEdit ha una licenza EPL ( opensource.org/licenses/eclipse-1.0.php ) [Da qui: andrei.gmxhome.de/anyedit/index.html]
Ashutosh Jindal

1
Non riuscivo a capire perché improvvisamente gli spazi bianchi alla fine delle linee venivano rimossi, finché non ho visto la tua domanda e ho scoperto che era a causa di AnyEditPlugin. Grazie!
Tzafrir,

Risposte:


142
  1. Rimozione di spazi bianchi dall'intero file in fase di modifica :

Preferences-> Java-> Editors-> Save Actions-> verifica Perform the selected actions on save-> verifica Additional actions-> clic Configure..-> vai alla Code organizingscheda -> verifica Remove trailing whitespace-> seleziona All lines.

  1. Rimozione di spazi bianchi solo dalle righe che ho modificato :

Preferences-> Java-> Editor-> Save Actions-> seleziona " Perform the selected actions on save-> controlla Format source code-> seleziona Format edited lines.

Nota che non è necessario fare clic Configure the formatter settings on the Formatter page: tutti gli stili di codice includono automaticamente la rimozione di spazi vuoti finali. Almeno non sono riuscito a trovare un'impostazione per questo nella configurazione di Formatter, e ha funzionato immediatamente per gli stili Java Convenzioni, Eclipse, Eclipse 2.1 e GoogleStyle .

Quando si utilizza questa configurazione, è ovviamente necessario disattivare anche la soluzione per la parte 1 della domanda.

Eclipse version checked: 4.5.2, 4.11

Come definisco il formato? Uso il link Formatter o il pulsante Configura?
Vijay Kotari,

Questa opzione appare anche in PDT per PHP, sotto Salva azioni.
Thaddeusmt,

1
@VijayKotari La risposta è stata modificata - non è necessario definire un formato.
Jan Żankowski,

350

Presumo che le tue domande riguardino il codice Java. In tal caso, non è necessario alcun plug-in aggiuntivo per ottenere 1). Puoi semplicemente andare su Preferenze -> Java -> Editor -> Salva azioni e configurarlo per rimuovere gli spazi bianchi finali .

A quanto pare vuoi anche rendere questo un ambiente a livello di squadra, giusto? Per semplificare la vita ed evitare di dover ricordare di averlo configurato ogni volta che si dispone di un nuovo spazio di lavoro, è possibile impostare l'azione di salvataggio come preferenza specifica del progetto che viene memorizzata nel proprio SCM insieme al codice.

Per farlo, fai clic con il pulsante destro del mouse sul tuo progetto e vai su Proprietà -> Java Editor -> Salva azioni . Da lì puoi abilitare le impostazioni specifiche del progetto e configurarlo per rimuovere gli spazi bianchi finali (tra le altre cose utili).

NB : questa opzione è stata rimossa in Eclipse Kepler (4.3) e versioni successive.

NB # 2: L'opzione sembra essere tornata in Eclipse Luna -Luna Service Release 1a (4.4.1)


2
Grazie, gcastro - è più facile di AnyEdit. Sfortunatamente, è per l'intero file in fase di modifica .. ancora non so come farlo solo per le righe che ho cambiato - sembra che al momento sia probabilmente impossibile.
Jan Żankowski,

7
Buono per Java; buono anche per C / C ++; ma non per Python in PyDev.
Craig McQueen,

14
Per Python in PyDev, ho fatto una richiesta di funzionalità per questo. Vedi: sourceforge.net/tracker/…
Craig McQueen il

5
Cordiali saluti ... Stesso concetto per PHP. Preferenze -> PHP -> Editor -> Salva azioni.
seanmrafferty,

1
Non so se questo abbia mai funzionato, ma certamente non sembra funzionare nell'ultima versione di Eclipse (Kepler). Puoi eseguire il formatter solo su linee modificate, ma il taglio degli spazi bianchi è limitato a tutte le linee o ignorando le linee vuote - davvero fastidioso.
Thor84no,

73

Non è necessario alcun plugin per farlo. Ad esempio, se si codifica JAVA, è possibile cancellare gli spazi bianchi finali configurando le azioni di salvataggio:

Eclipse 3.6

Preferences-> Java-> Editors-> Save Actions-> Verifica Perform the selected actions on save-> Verifica Additional actions-> Fare clic suConfigure.. pulsante.

Nella Code organizingscheda, selezionaRemove trailing whitespace


4
Questa è la prima risposta che consiglia in particolare di cercare in "Azioni aggiuntive" in "Rimuovi spazi vuoti finali". Grazie.
DavidRR,

7
questo funziona solo con file .java, di solito lavoro con dozzine di estensioni
Eildosa,

Funziona per Eclipse 4.12
Matilda Smeds,

46

PyDev può farlo con Ctrl+ Shift+ Fse hai l'opzione di formattazione del codice impostata per farlo, oppure mediante during saving:

Eclipse-> Window-> Preferences-> PyDev-> Editor-> Code Style-> Code Formatter:

Io uso almeno questi:

  • Formattazione automatica prima del salvataggio
  • Linee di taglio giuste?
  • Aggiungi una nuova riga alla fine del file

5
Questo non copre la questione di rimuovere lo spazio solo dalle linee modificate. È anche una funzione pericolosa perché esegue tutte le opzioni di Formattatore di codice e un'opzione non selezionata non è la stessa di "ignora / non usare". es: se "Usa spazio dopo le virgole" è deselezionato, il Formatter del codice rimuoverà quegli spazi invece di ignorare l'opzione.
JCotton,

7
Esiste una nuova opzione in Formy Code Patter: Al salvataggio, applica la formattazione solo nelle righe modificate.
Warvariuc,

2
-1 per dare una risposta troppo generale: la domanda riguardava solo gli spazi bianchi; abilitando la formattazione automatica del codice, i commit di origine inizieranno a contenere elementi non pianificati, causando una cronologia disordinata perché i commit contengono elementi non correlati al titolo di commit.
Erik Kaplun,


19

È possibile mappare una chiave in Eclipse per rimuovere manualmente gli spazi bianchi finali nell'intero file, ma solo su richiesta anziché automaticamente al salvataggio. (Preferenza / Chiavi e quindi mappare un set di chiavi su File / Rimuovi spazio bianco finale) Questo può essere utile se si desidera disinfettare tutti i nuovi file, mantenendo intatto il codice legacy.

Un'altra strategia è quella di attivare la visualizzazione visiva degli spazi bianchi, quindi almeno saprai quando aggiungi degli spazi bianchi finali. Per quanto ne so, non c'è modo di mostrare solo gli spazi bianchi finali, ma sarò felice di essere smentito.


Grazie mille per questa risposta! Finora è l'unico modo che ho trovato per il plugin Aptana.
Igor Zinov'yev,

11

In breve, per quegli editor che non supportano affatto la rimozione di spazi bianchi finali (ad esempio l'editor XML), è possibile rimuoverlo da tutte le righe facendo una ricerca e sostituzione, abilitando le espressioni regolari, quindi trovando "[\ t] + $ "e sostituendolo con" "(vuoto). Probabilmente c'è una regex migliore per farlo, ma funziona per me senza la necessità di installare AnyEdit.


9

Direi anche AnyEdit. Non fornisce queste funzionalità specifiche. Tuttavia, se tu e il tuo team utilizzate le funzioni AnyEdit in ogni azione di salvataggio, quando aprite un file, non deve avere spazi vuoti finali.

Pertanto, se si modifica questo file e si aggiungono nuovi spazi finali, durante l'operazione di salvataggio, AnyEdit rimuoverà solo questi nuovi spazi, poiché sono gli unici spazi finali in questo file.

Se, per alcuni motivi, devi mantenere gli spazi finali sulle linee che non sono state modificate da te, allora non ho una risposta per te e non sono sicuro che questo tipo di funzionalità esista in qualsiasi plug-in Eclipse ...


4
Sì, mi piacerebbe mantenere gli spazi sulle linee non modificati da me. Questo è il comportamento predefinito di Intellij Idea (rimuovere gli spazi sulle mie linee, tenerli su altri) e mi piacerebbe ottenerli in Eclipse . Grazie per la risposta.
Jan Żankowski,



4

C'è un modo davvero semplice per farlo con sed, lo strumento da riga di comando Unix. Probabilmente potresti creare una macro in Eclipse per eseguire questo:

sed -i 's/[[:space:]]*$//' <filename>

4

Come ha detto @Malvineous, non è professionale, ma una soluzione alternativa per utilizzare il metodo Trova / Sostituisci per rimuovere lo spazio finale (in basso inclusa la scheda U + 0009 e lo spazio bianco U + 0020).
Premi Ctrl + F (o comando + F)

  1. Trova [\t ][\t ]*$
  2. Sostituisci con una stringa vuota
  3. Usa espressioni regolari
  4. Sostituisci tutto

extra:
per rimuovere lo spazio iniziale, trova ^[\t ][\t ]*invece di [\t ][\t ]*$
Per rimuovere le righe vuote, trova^\s*$\r?\n


1
Che ne dici [\t ]+$invece di [\t ][\t ]*$?
Jonah Graham,

1

Non sono a conoscenza di alcuna soluzione per la seconda parte della tua domanda. Il motivo è che non è chiaro come definire ho cambiato . Cambiato quando? Solo tra 2 salvataggi o tra commit ... Fondamentalmente - dimenticalo.

Presumo che ti piacerebbe attenersi ad alcune linee guida, ma non toccare il resto del codice. Ma la linea guida dovrebbe essere usata nel complesso, e non per morsi e pezzi. Quindi il mio suggerimento è: modifica tutto il codice sulla linea guida: è un'operazione una tantum, ma assicurati che tutti i tuoi sviluppatori abbiano lo stesso plugin (AnyEdit) con le stesse impostazioni per il progetto.


7
Poiché si tratta di un'azione di salvataggio, le linee cambieranno tra i salvataggi. Eclipse tiene già traccia di queste linee per la marcatura nella barra laterale.
Starblue,

0

Ho usato questo comando per git: git config --global core.whitespace cr-at-eol

Rimuove i ^Mcaratteri che stanno trascinando.

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.