Recorte los espacios finales en Xcode

103

¿Hay alguna forma de obligar a Xcode a recortar los espacios en blanco finales cuando guardo el archivo?

Estoy usando la versión 3.1.3 si eso importa.

Alejandro Gladysh
fuente

Respuestas:

22

Puede crear una secuencia de comandos y vincularla a un atajo de teclado:

  • Seleccione Menú de secuencias de comandos> Editar secuencias de comandos de usuario ...
  • Presione el botón + y seleccione New Shell Script
  • Asígnele un nombre como "Eliminar espacios finales" y un atajo como ⌃⇧R.
  • Establezca Entrada en "Selección" y Salida en "Reemplazar selección"

Luego ingrese el siguiente script:

#!/usr/bin/perl

while (<>) {
    s/\s+$//;
    print "$_\n";
}
Darren
fuente
9
Ah, sí, tan simple ... Gracias. ¿Hay alguna forma de asociar esto con el guardado de archivos?
Alexander Gladysh
Para trabajar en un archivo completo (que es probablemente lo que le gustaría hacer), establezca Entrada en "Documento completo" y Salida en "Reemplazar contenido del documento". Sin embargo, esto deja el cursor en la parte inferior del archivo.
SMBiggs
7
Esta respuesta está obsoleta a partir de Xcode 4.4. Vea la respuesta de Martin Stolz.
Basil Bourque
239

A partir de Xcode 4.4, los espacios en blanco se recortarán automáticamente de forma predeterminada, a menos que la línea sea todo espacios en blanco. También puede activar Including whitespace-only linespara solucionar este problema, que no está activo de forma predeterminada.

Ir Xcode > Preferences > Text Editing > While editing

Xcode preferences screenshot

Martin Stolz
fuente
15
Esta configuración solo recorta los espacios en blanco finales de una línea después de que el cursor ha dejado esa línea. Por lo tanto, aún le permite guardar un archivo con una línea de espacio en blanco al final, si el cursor está en esa línea al guardar.
ma11hew28
7
¿Por qué diablos no es esto el predeterminado? Si tiene un archivo existente con espacios en blanco al final, simplemente marque todo, corte, guarde, pegue, guarde.
friederbluemle
Esto debe anular la solución de script hacky en esta respuesta.
Urda
7
El uso de esto + ctrl-ien todos los archivos existentes se encarga de los espacios en blanco finales
Kirualex
24

Estoy usando el complemento Xcode de Google Toolbox para Mac , agrega un parámetro "Corregir espacios en blanco al guardar" que recorta los espacios en blanco finales al guardar. Extrañaba mucho eso de emacs.

Maxime
fuente
1
También estoy usando este complemento. Hace lo que dice.
Nathan
Sería perfecto, desafortunadamente no funciona en Xcode 4 en este momento :(
deepwell
6
Ahora tenemos algo de soporte básico de Xcode 4. Vea nuestro nuevo complemento
dmaclach
1
¿Dónde puedo encontrar el parámetro "Corregir espacios en blanco al guardar"?
jhasse
Finalmente logré que GTM funcionara en Xcode 4.3.2, pero las instrucciones de instalación de la wiki de GTM parecían no ser válidas. En lugar de colocar el .xcplugin ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins(según las instrucciones de Google) tuve que ponerlo /Applications/Xcode.app/Contents/PlugInsy reiniciar Xcode.
Kristofer Sommestad
3

Para Xcode 8, instalé el swimat Xcode, para formatear el código Swift, que eliminó todos los espacios finales y las líneas de solo espacios en blanco.

Métodos de instalación

  1. Instalar a través de homebrew-cask:

    brew cask install swimat
  2. Descargue la aplicación directamente:
    https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zip

  3. Clonar extensionrama y archivar en la aplicación Mac.

Uso

Una vez instalado, puede ejecutar Swimat en Xcode a través de Editor -> Swimat -> Format.

moollaza
fuente
esta herramienta no elimina las líneas en blanco.
Mehdico
1

Esto no es posible en Xcode 3.2

Editar:

Respondí esta pregunta tan brevemente porque no hay forma de hacerlo correctamente .

Por supuesto, dado que es software, puede hacer cualquier cosa: comenzando con los trucos de Input Manager u otras formas de inyección de código para la interceptación del teclado en todo el sistema, puede alterar su sistema local para hacer cualquier cosa en cualquier momento. Puede configurar una acción de carpeta de Applescript (arrgh) o usar un demonio de inicio y la función FSEvents para ver sus archivos de código fuente.

También puede agregar un par de scripts a Xcode (scripts de usuario en el menú, fases del script en los destinos, acciones personalizadas en el organizador, incluso existe la posibilidad muy desconocida de un script de inicio), pero todas estas soluciones son defectuosas, ya que involucra al usuario o configuración personalizada en la máquina del usuario.

No conozco una solución que simplemente funcione después de verificar un proyecto de SCM. Creo que es necesario este y otros scripts de personalización similares, así que presenté un error (radar 7203835, "Característica: más activadores de script de usuario en el flujo de trabajo de Xcode"). Todavía no he recibido ningún comentario.

Aquí está el texto completo de la entrada del radar:

Sería útil tener más lugares para ejecutar scripts en Xcode.

Ejemplos:

  1. Scripts
    previos a la compilación Los scripts previos a la compilación se pueden utilizar para crear requisitos previos como archivos * .xcconfig o encabezados config.h. Esto no es posible con "Ejecutar fases de compilación de script", ya que el seguimiento de dependencias tiene lugar antes de que se active cualquier fase de compilación.

  2. Publicar scripts de compilación
    Similar al anterior, pero ejecutándose después de que finaliza la compilación (incluida la firma de código, etc.). Útil para embalaje adicional, verificación de validez, etc.

  3. Scripts de confirmación previos / posteriores a SCM.
    Para comprobar la integridad del proyecto.

  4. Guión de guardado previo / posterior al archivo.
    Para comprobar / modificar un archivo antes de guardarlo. Por ejemplo, ejecutar embellecedores cody

  5. Acciones de proyecto personalizadas.
    Soy consciente de la capacidad del organizador para definir acciones arbitrarias. Pero esta es una función por usuario (no parte del proyecto). Me gustaría definir acciones como compilar o limpiar que aparecen en el menú de compilación y que son parte de un proyecto.

Nikolai Ruhe
fuente
Editado para responder por qué las soluciones alternativas no son satisfactorias en este caso
Nikolai Ruhe
2
Gracias. Si bien estoy a favor de hacerlo de la manera adecuada, me conformaría con cualquier truco no demasiado intrusivo. Esos espacios en blanco adicionales son realmente molestos.
Alexander Gladysh
0

La mejor y más fácil forma sin usar scripts, hacks y mucho más. Simplemente vaya a Buscar y reemplazar la mejor y más fácil manera sin usar scripts, hacks y mucho más. Simplemente vaya a Buscar y reemplazar y presione "alt / opción + espacio" y presione el botón "espacio" en la barra de reemplazo y luego haga clic en reemplazar todo. ¡Reemplazará los espacios en blanco con espacios normales y la advertencia / error desaparecerá!

H2zee
fuente
1
¿Esto solo elimina los espacios finales como se solicita en la pregunta?
Blastfurnace