¿Cómo eliminar automáticamente los espacios en blanco finales en Eclipse?

422

La pregunta tiene dos partes, una de las cuales ya tengo la respuesta.

  1. ¿Cómo eliminar automáticamente los espacios en blanco finales del archivo completo que se está editando ? -> Respuesta: use el complemento AnyEdit , que se puede configurar para hacerlo en cualquier guardado en el archivo.
  2. ¿Cómo eliminar automáticamente los espacios en blanco finales solo de las líneas que cambié ? -> Esto no lo sé y agradecería cualquier ayuda.
Jan Żankowski
fuente
97
Sería feliz si pudiera convencer a Eclipse para que deje de agregar espacios en blanco finales que no escribí.
divegeek
55
No necesitas un complemento. Simplemente use C ++ -> Editor -> Guardar acciones. También General -> Editores -> Editores de texto -> Mostrar caracteres de espacio en blanco (haga clic en él para ver la configuración detallada) es extremadamente útil.
Trass3r
3
La acción de guardar predeterminada no recorta los espacios en blanco finales en los comentarios de Java Doc. Además, está limitado por el hecho de que funciona solo en archivos Java. Tenemos un sistema de revisión de código que marca todos los espacios en blanco finales como errores. AnyEdit es invaluable para ocuparse de espacios en blanco finales para todos los tipos de archivos. Además, puede ser útil encontrar qué restricciones tiene su empresa para el software de terceros. El complemento AnyEdit tiene una licencia EPL ( opensource.org/licenses/eclipse-1.0.php ) [Desde aquí: andrei.gmxhome.de/anyedit/index.html]
Ashutosh Jindal
1
No pude entender por qué de repente se eliminan los espacios en blanco al final de las líneas, hasta que vi su pregunta y descubrí que era debido a AnyEditPlugin. ¡Gracias!
Tzafrir

Respuestas:

142
  1. Eliminar espacios en blanco de todo el archivo que se está editando :

Preferences-> Java-> Editors-> Save Actions-> verificar Perform the selected actions on save-> verificar Additional actions-> hacer clic Configure..-> ir a la Code organizingpestaña -> verificar Remove trailing whitespace-> seleccionar All lines.

  1. Eliminando espacios en blanco solo de las líneas que cambié :

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

Tenga en cuenta que no es necesario hacer clic Configure the formatter settings on the Formatter page: todos los estilos de código incluyen automáticamente la eliminación del espacio en blanco al final. Al menos no pude encontrar una configuración para esto en la configuración del formateador, y funcionó de forma predeterminada para las convenciones Java incorporadas, Eclipse, los estilos Eclipse 2.1 y GoogleStyle .

Al utilizar esta configuración, obviamente también debe desactivar la solución para la parte 1 de la pregunta.

Eclipse version checked: 4.5.2, 4.11
Dan Berindei
fuente
¿Cómo defino el formato? ¿Utilizo el enlace Formateador o el botón Configurar?
Vijay Kotari
Esta opción también aparece en PDT para PHP, en Guardar acciones.
thaddeusmt
1
@VijayKotari Answer ha sido editado, no es necesario definir un formato.
Jan Żankowski
350

Supongo que sus preguntas son con respecto al código Java. Si ese es el caso, en realidad no necesita ningún complemento adicional para lograr 1). Puede ir a Preferencias -> Java -> Editor -> Guardar acciones y configurarlo para eliminar los espacios en blanco finales .

Por lo que parece, también desea hacer de este un entorno de todo el equipo, ¿verdad? Para facilitar la vida y evitar tener que recordar configurarlo cada vez que tenga un nuevo espacio de trabajo, puede configurar la acción de guardar como una preferencia específica del proyecto que se almacena en su SCM junto con el código.

Para hacer eso, haga clic derecho en su proyecto y vaya a Propiedades -> Editor de Java -> Guardar acciones . Desde allí, puede habilitar configuraciones específicas del proyecto y configurarlo para eliminar los espacios en blanco finales (entre otras cosas útiles).

NB : esta opción se ha eliminado en Eclipse Kepler (4.3) y versiones posteriores.

NB # 2: La opción parece estar de vuelta en Eclipse Luna -Luna Service Release 1a (4.4.1)

gcastro
fuente
2
Gracias, gcastro, es más fácil que AnyEdit. Desafortunadamente, es para todo el archivo que se está editando ... aún no sé cómo hacerlo solo para las líneas que cambié, parece que es probable que sea imposible en este momento.
Jan Żankowski
77
Bueno para Java; bueno para C / C ++ también; pero no para Python en PyDev.
Craig McQueen
14
Para Python en PyDev, hice una solicitud de función para esto. Ver: sourceforge.net/tracker/…
Craig McQueen
55
FYI ... Mismo concepto para PHP. Preferencias -> PHP -> Editor -> Guardar acciones.
seanmrafferty
1
No sé si esto funcionó alguna vez, pero ciertamente no parece funcionar en la última versión de Eclipse (Kepler). Puede ejecutar el formateador solo en líneas editadas, pero recortar el espacio en blanco se limita a todas las líneas o ignorar las líneas vacías, lo que es realmente molesto.
Thor84no
73

No necesita ningún complemento para hacerlo. Por ejemplo, si codifica JAVA, puede borrar espacios en blanco finales configurando acciones de guardado:

Eclipse 3.6

Preferences-> Java-> Editors-> Save Actions-> Verificar Perform the selected actions on save-> Verificar Additional actions-> Haga clic en el Configure..botón.

En la Code organizingpestaña, marqueRemove trailing whitespace

Dave
fuente
44
Esta es la primera respuesta que aconseja específicamente buscar en "Acciones adicionales" para "Eliminar espacios en blanco finales". Gracias.
DavidRR
77
esto solo funciona para archivos .java, generalmente estoy trabajando con una docena de extensiones
Eildosa
Funciona para Eclipse 4.12
Matilda Smeds
46

PyDev puede hacerlo con Ctrl+ Shift+ Fsi tiene configurada la opción de formateador de código, o con during saving:

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

Yo uso al menos estos:

  • Formato automático antes de guardar
  • ¿Líneas de corte correctas?
  • Agregar nueva línea al final del archivo
Ciatico
fuente
55
Esto no cubre la cuestión de quitar espacio solo de las líneas editadas. También es una característica peligrosa porque ejecuta todas las opciones de formateador de código y una opción sin marcar no es lo mismo que "ignorar / no usar". ej .: si "Usar espacio después de comas" está desmarcado, Code Formatter eliminará esos espacios en lugar de ignorar la opción.
JCotton
77
Hay una nueva opción en PyDev Code Formatter: al guardar, solo aplique el formato en las líneas cambiadas.
warvariuc
2
-1 por dar una respuesta demasiado general: la pregunta era solo sobre el espacio en blanco; habilitar el formateo automático del código significa que sus confirmaciones de origen comenzarán a tener cosas no planificadas en ellas, lo que provocará un historial desordenado porque las confirmaciones contienen cosas que no están relacionadas con el título de confirmación.
Erik Kaplun
36

Haz lo siguiente:

Preferences-> Java-> Editor->Save Actions

ingrese la descripción de la imagen aquí

Sumit Singh
fuente
19

Puede asignar una clave en Eclipse para eliminar manualmente los espacios en blanco finales en todo el archivo, pero solo a pedido en lugar de automáticamente al guardar. (Preferencia / Teclas y luego asigne un conjunto de teclas a Archivo / Eliminar espacio en blanco al final) Esto puede ser útil si desea desinfectar todos los archivos nuevos, pero sin modificar el código heredado.

Otra estrategia es activar la visualización del espacio en blanco, para que al menos sepa cuándo agregará un espacio en blanco al final. Hasta donde sé, no hay forma de mostrar solo los espacios en blanco al final, pero me alegrará que se demuestre que estoy equivocado.

Kena
fuente
Muchas gracias por esta respuesta! Hasta ahora, es la única forma que he encontrado para el complemento Aptana.
Igor Zinov'yev
11

En un apuro, para aquellos editores que no admiten la eliminación del espacio en blanco final (por ejemplo, el editor XML), puede eliminarlo de todas las líneas haciendo una búsqueda y reemplazo, habilitando expresiones regulares y luego buscando "[\ t] + $ "y reemplazándolo con" "(en blanco). Probablemente haya una mejor expresión regular para hacerlo, pero funciona para mí sin necesidad de instalar AnyEdit.

Malvinoso
fuente
9

Yo diría AnyEdit también. No proporciona estas funcionalidades específicas. Sin embargo, si usted y su equipo usan las funciones AnyEdit en cada acción de guardar, cuando abre un archivo, no debe tener ningún espacio en blanco al final.

Por lo tanto, si modifica este archivo y agrega nuevos espacios finales, entonces, durante la operación de guardar, AnyEdit eliminará solo estos espacios nuevos, ya que son los únicos espacios finales en este archivo.

Si, por alguna razón, necesita mantener los espacios finales en las líneas que no fueron modificadas por usted, entonces no tengo respuesta para usted, y no estoy seguro de que este tipo de característica exista en ningún complemento de Eclipse ...

Romain Linsolas
fuente
44
Sí, me gustaría mantener los espacios en las líneas no modificados por mí. Este es el comportamiento predeterminado de Intellij Idea (eliminar espacios en mis líneas, mantenerlos en otros), y me gustaría obtener eso en Eclipse . Gracias por la respuesta.
Jan Żankowski
5

Para php también hay una opción:ingrese la descripción de la imagen aquí

Hey hombre
fuente
4

Hay una manera realmente fácil de hacer esto con sed, la herramienta de línea de comandos de Unix. Probablemente podría crear una macro en Eclipse para ejecutar esto:

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

Como dijo @Malvineous, no es profesional, sino una solución alternativa usar el método Buscar / Reemplazar para eliminar el espacio final (a continuación, que incluye la pestaña U + 0009 y el espacio en blanco U + 0020).
Simplemente presione Ctrl + F (o comando + F)

  1. Encontrar [\t ][\t ]*$
  2. Reemplazar con una cadena en blanco
  3. Usa expresiones regulares
  4. Reemplaza todo

extra:
Para eliminar el espacio inicial, busque en ^[\t ][\t ]*lugar de [\t ][\t ]*$
Para eliminar líneas en blanco, busque^\s*$\r?\n

fuweichin
fuente
1
¿Qué tal en [\t ]+$lugar de [\t ][\t ]*$?
Jonah Graham
1

No conozco ninguna solución para la segunda parte de su pregunta. La razón es que no está claro cómo definir que cambié . Cambiado cuando? Solo entre 2 salvamentos o entre confirmaciones ... Básicamente, olvídalo.

Supongo que le gustaría seguir algunas pautas, pero no toque el resto del código. Pero la directriz debe usarse en general, y no para picaduras y piezas. Entonces, mi sugerencia es: cambie todo el código a la directriz: es una operación única, pero asegúrese de que todos sus desarrolladores tengan el mismo complemento (AnyEdit) con la misma configuración para el proyecto.

camioneta
fuente
77
Como se trata de una acción de guardar, las líneas se cambiarán entre guardar. Eclipse ya realiza un seguimiento de estas líneas para marcar en la barra lateral.
starblue
0

Usé este comando para git: git config --global core.whitespace cr-at-eol

Elimina los ^Mcaracteres que están detrás.

user7577563
fuente