¿Cómo creo un atajo de teclado Delete-Line en Xcode 8? Las soluciones Xcode 3 ya no funcionan

80

En versiones anteriores de Xcodeera posible crear un enlace de clave para eliminar la línea actual. Había diferentes soluciones y se describen, por ejemplo, aquí:

Xcode: tecla de acceso rápido para eliminar línea

Xcode duplicar / eliminar línea

http://bigdiver.wordpress.com/2009/09/11/configure-homeend-key-bidings-on-mac-os-x/

http://www.betadesigns.co.uk/Blog/2010/02/03/custom-xcode-shortcuts/

Todas las soluciones incluyen la modificación de uno de estos archivos:

~ / Library / Application Support / Xcode / Key Bindings / *. Pbxkeys
~ / Library / KeyBindings / DefaultKeyBinding.dict
~ / Library / KeyBindings / PBKeyBinding.dict

Un buen recurso para los accesos directos existentes Xcode 4es http://cocoasamurai.blogspot.com/2011/03/xcode-4-keyboard-shortcuts-now.html . Se enumeran muchos relacionados con la eliminación, pero ninguno para "eliminar línea".

PERO, estas soluciones NO funcionan desde entonces Xcode 4.

Actualización : el problema sigue siendo el mismo que el deXcode 5.1.1

Actualización : el problema sigue siendo el mismo que el deXcode 6.1 GM Seed 2

Actualización : todavía se aplica a Xcode versión 7.3 (7D175) a partir del 26 de abril de 2016

Actualización : Seis años después, Xcode 8.3 tiene una solución incorporada. Vea la respuesta a continuación.

Klaas
fuente
Mientras tanto, decidí crear una macro de teclado con keyboardmaestro.com .
Klaas
Supongo que a continuación se enumeran algunas soluciones. Personalmente estoy usando una macro de Keyboard Maestro.
Klaas

Respuestas:

71

Parece que Xcode 8.3 finalmente agregó el comando Eliminar línea :)

De forma predeterminada, no se le asigna ningún método abreviado de teclado, por lo que deberá agregar uno usted mismo en:

  1. Abra Xcode > Preferencias > Vinculaciones de teclas
  2. Buscar Delete Line
  3. Agregue un atajo de teclado en la columna Clave

Vinculaciones de teclas Xcode

Paulo Mattos
fuente
1
¡GUAUU! ¡Buena atrapada! ¡Nunca pensé que esto sucedería!
Klaas
¿Alguien ha descubierto qué más podría haber cambiado?
Klaas
1
@Klaas yo también hombre, ¡nunca pensé que vería esto! Ejecuté una diferencia entre los IDETextKeyBindingSet.plistarchivos Xcode 8.2.1 y Xcode 8.3.2 y el único cambio detectado fue este comando Eliminar línea anterior :(
Paulo Mattos
@FelixTurner ¿Ya probaste el nuevo Xcode beta 2 ?
Paulo Mattos
3
Encontré una solución en Xocde 9 Beta . Por favor, vea mi respuesta a continuación. stackoverflow.com/a/45868495/1287336
Wooseong Kim
95

Después de mucha búsqueda aquí y allá, llegué a la siguiente solución:

Mantenga presionada la controltecla y luego presione AKK.

(Nota: el segundo Kborra la línea vacía).

En realidad, es una combinación de dos comandos: Move to Beginning of Paragraph& Delete to End of Paragraph. También puede usar / establecer otra (s) clave (s) y también puede usar / establecer / cambiar combinaciones de teclas para otros comandos, por ejemplo, Move to Beginning of Line& Delete to End of Line. Usé las combinaciones de teclas anteriores (predeterminadas) como me convenían.

Editar:

Para eliminar más de una línea consecutiva , primero presione y mantenga presionada la controltecla y luego presione A(solo para ir al principio del párrafo / línea), luego presione y mantenga presionada Khasta que se eliminen todas las líneas (esto funcionaría ya que el cursor permanece en el principio).

Solo para facilitar la tarea (para mí), he configurado commandDpara Delete to End of Paragraphy home/ endpara ir al principio / final del párrafo.

Vasu
fuente
2
Buena solución, pero realmente estoy buscando un solo atajo. Si quiero eliminar 5 líneas en TextWrangler, por ejemplo, solo presiono cinco veces cmd-d. Curiosamente, cmd-d no se usa en Xcode ...
Klaas
@Klaas, consulte mi respuesta actualizada. Puede que no sea lo que esperabas, pero es una buena solución.
Vasu
Tan pronto como su respuesta obtenga algunos votos positivos, la aceptaré ya que Xcode 4 no incluirá esto en el corto plazo.
Klaas
¡xCode es terrible! - Desarrollador de Android usando Android Studio.
M'hamed
El atajo más largo jamás visto CTRL + A + K + K para eliminar la línea actual
canbax
59

¡Entendido! Esto funciona en XCode 4.3 a 4.5 y no requiere aplicaciones adicionales y es específico de XCode.

Esta solución es básicamente la misma que el comando Duplicar línea descrito aquí :

Edite el archivo plist

Está en /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

Tenga en cuenta que:

  • la respuesta vinculada sugiere usar XCode para esto, pero encuentro que esto bloquea XCode
  • esta ruta es para Lion; puede variar para otras versiones del sistema operativo
  • es posible que deba sudo o cambiar los permisos para editar este archivo
  • cierre XCode antes de editar

Agregar un nuevo <dict>elemento

Agregue este texto justo encima del cierre <dict>en la parte inferior de este archivo

    <key>Custom</key>
    <dict>
      <key>Delete Current Line In One Hit</key>
      <string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string> 
    </dict>

Tenga en cuenta que:

  • Esto está dentro de lo existente, <dict>por lo que hay un </dict></plist>después de esto
  • Esto asocia la acción nombrada "Eliminar línea actual en un solo golpe" a las tres acciones clave en la cadena. Jugué con diferentes opciones aquí para obtener la combinación correcta. Por ejemplo, si intenta moveToBeginningOfLine, deleteToEndOfLine en lugar de viceversa, usarlo en líneas vacías eliminará la línea y la siguiente línea completa. Que es desagradable

Guarda esto y abre XCode

Agregar una nueva vinculación de teclas en XCode

Vea las capturas de pantalla para esto en la respuesta vinculada o haga esto:

  1. Abrir las preferencias de XCode
  2. Seleccionar combinaciones de teclas
  3. Haga clic en todo
  4. En el cuadro de búsqueda, escriba "Eliminar" y busque "Eliminar la línea actual de una vez".
  5. Agregue su nueva encuadernación.

Esto debería ser suficiente, pero con una advertencia. Nunca pude conseguir que XCode guardara el nuevo enlace. El mismo problema se describe aquí, aunque mi solución tuvo una ligera variación:

  1. Cree un duplicado de los enlaces predeterminados (presione el botón + en la parte inferior izquierda de la ventana Bindings y cree un duplicado)
  2. Establecer el nuevo enlace en el duplicado
  3. Cierre el cuadro de diálogo de preferencias (¡esa es la variación!)
  4. Abra las preferencias nuevamente y haga un nuevo duplicado del duplicado anterior y elimine el duplicado anterior.

Qué galimatías, ¿eh? Pero funciona. Ahora tengo Ctrl + D mapeado para eliminar toda la línea actual en XCode 4.3 en Lion.

Ruibarbo
fuente
Actualización: una limitación que me parece irritante con esta solución es que solo borra una línea a la vez, incluso si tiene muchas seleccionadas. Mi tendencia natural es seleccionar 3 líneas y presionar ctrl + D y borrarlas todas, pero no es así.
Ruibarbo
Tenga en cuenta que si instala una nueva versión de XCode, esto no se conservará, mientras que sus personalizaciones de enlace de claves habituales sí. ("Actualizo" cambiando el nombre del antiguo XCode.app e instalando el nuevo de nuevo). Las combinaciones de teclas reales están en ~ / Library ... por lo que se conservan, pero esta nueva entrada no lo es
Ruibarbo
Sí, funciona en Xcode 5 y guarda el enlace de teclas para que otros puedan pensar que vale la pena molestarse :)
RedYeti
@Rhubarb Para eliminar varias líneas a la vez por tener texto seleccionado en ese sentido y simplemente con apretar el acceso directo sólo tiene que añadir una delete:frente a la secuencia de comandos: delete:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:. Sería genial si edita esto en su respuesta.
LopSae
2
Esto funciona en Xcode 6.2 (6C86e), y tampoco necesitaba la solución para hacer que Xcode "guardara" el enlace de teclas. ¡Hurra! :)
Will Hains
16

Encontré una solución temporal para Xcode 9 .

Abra Xcode / Content / Frameworks / IDEKit.framework / Resources / IDETextK‌ eyBindingSet.plist y agregue las líneas a continuación.

Imita la acción que ocurre en Xcode 8 con soporte limitado. Solo puede eliminar una sola línea, pero de alguna manera estoy satisfecho. Espero que esto se solucione pronto.

<key>Customized</key>
<dict>
    <key>Delete Line</key>
    <string>moveToBeginningOfLine:, deleteToEndOfLine:, moveDown:, deleteBackward:</string>
</dict>

Después de reiniciar Xcode, puede ver el elemento personalizado Key Bindingscomo se muestra a continuación.

ingrese la descripción de la imagen aquí

¡Átalo y úsalo!

Editar) Creo que a continuación uno es mejor que el original.

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
Wooseong Kim
fuente
2
Xcode 9 respuesta correcta aquí. It Works Xcode 9 Versión 9.0 (9A235)
uspython
¿Por qué se rompió esto en Xcode 9? Esto funcionó un poco para mí. Tuve que reemplazar el valor del valor de cadena Delete Line existente en lugar de agregar una clave personalizada.
Alexander Smith
13

Yo uso BetterTouchTool , es muy bueno:

ingrese la descripción de la imagen aquí

borisdiakur
fuente
Buena alternativa, modificar plist no siempre es bueno y fácil de perder la configuración.
Albert.Qing
Muy buena alternativa para solucionar el problema. Desafortunadamente, no es una acción atómica, por lo que si desea deshacer, debe presionar Cmd Z dos veces (las dos eliminaciones). Además, el administrador de ventanas agrega que es útil (también recomendaría Spectacle).
Rudolf Real
1
BTT es una herramienta asombrosa. Además, este método está bastante preparado para el futuro siempre que Apple tenga las acciones que puede combinar para hacer lo que está buscando.
SuperDuperTango
1
No había considerado usar BTT (¡como algo que ya uso!) Mucho mejor que editar algo dentro de la aplicación. Además, puede sincronizar configuraciones entre máquinas, que es algo que necesito.
Relequestual
9

La respuesta de Rhubarb es correcta y funciona, pero una cosa, hay un comando más simple en el archivo plist. Siga todas las instrucciones de Rhubarb pero

en vez de

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>

utilizar a continuación

<string>selectLine:, delete:</string>

Esto es más claro y descarta cualquier posibilidad de mal funcionamiento.

Quiero escribir esto como comentario, pero mi "reputación" no me permite hacer eso.

Madriguera del conejo
fuente
Mezclar su solución con esta respuesta resuelve el problema. Gracias de hecho
marcelosalloum
8

prueba esto:

  1. Primero abra Xcode-> Preferencias

  2. Seleccionar combinaciones de teclas

  3. buscar Eliminar párrafo

  4. Cambie Eliminar párrafo a su acceso directo

ingrese la descripción de la imagen aquí

Bary Levy
fuente
No tengo idea de por qué otros no están usando esta solución SIMPLE. Por favor vote por ella ya que las otras son mucho más complejas. Esta es también la forma en que DEBE hacerlo: a través de un enlace de teclas
lista de verificación
No ocurre nada ejecutar Delete Paragraphen Xcode Versión 9.0 (9A235). ¿Lo probaste en Xcode 9?
Wooseong Kim
2

Si es un usuario de Keyboard Maestro, simplemente cree una macro que haga lo siguiente:

  • Comando Flecha izquierda
  • Desplazar flecha hacia abajo
  • Eliminar

Lo asigné a Command-D y lo hice disponible solo en Xcode.

Paul Waldo
fuente
Estoy usando Better Touch Tool y tú también deberías poder asignarla.
abc123
1

Parece que XCode ahora usa un archivo plist frente a un archivo dict, y el nuevo formato no admite la adición de varios comandos a una combinación de teclas. Tampoco parece haber una forma de agregar comandos personalizados para vincularlos. La única forma que he encontrado para hacer que algo funcione es estableciendo un enlace de teclas para las acciones separadas, como ^Dpara deleteToEndOfLine:, luego ^Lpara moveToBeginningOfLine:, dándole ^L+^Del efecto combinado.

onteria_
fuente
Ya existen algunos valores predeterminados para manejar esto. ^ k para "eliminar hasta el final de la línea", cmd-delete para "eliminar al principio de la línea".
Klaas
En el archivo keybindings.dict normal (global), colocamos comandos separados en una matriz, y eso funciona.
McUsr
1

Si no le importa tener esa combinación de teclas en otras aplicaciones, puede intentar configurarla en las combinaciones de teclas generales de Cocoa. Esto tiene una explicación.

Laca
fuente
2
Ya probé esto, pero las combinaciones de teclas globales no funcionan en XCode 4. Las probé en TextMate y funcionan allí. Así que hice las modificaciones correctas.
Klaas
1

parece que no se puede hacer ahora ... no dude en corregirme si me equivoco ... pero aquí está mi nueva solución ...

vaya a las preferencias de xcode, luego a la pestaña de combinaciones de teclas. Duplique el conjunto predeterminado, para que no se enoje conmigo cuando la sugerencia de que haga rompa algo que usará.

encuentre 2 teclas que sean adyacentes y no se usen para ningún comando que use ... ";", "'" quizás. (No uso el comando n para un archivo nuevo, así que elegí n, m)

establezca la primera tecla en "Mover al inicio de la línea" y la segunda tecla en "Eliminar al final de la línea"

luego usa esa secuencia para borrar una línea ...

alternativo se establecería algo para seleccionar la línea, luego simplemente use eliminar.

Jugador de Grady
fuente
-1

Primero abra Xcode-> Preferencias

Seleccionar combinaciones de teclas

Luego busca Eliminar

Cambie Eliminar el final de línea a su acceso directo (prefiero CMD + D )

Eso es todoAquí está la captura de pantalla

LoGoCSE
fuente
Hm ... Esto no borra toda la línea.
Klaas
Debe colocar el cursor al comienzo de la línea
LoGoCSE
Ok, esto es lo mismo que ctrl-k
Klaas