Xcode duplicar / eliminar línea


128

Viniendo de Eclipse y habiendo sido usado para duplicar líneas todo el tiempo, es bastante extraño descubrir que Xcode no tiene tal función. O lo hace?

Sé que es posible cambiar las combinaciones de teclas de todo el sistema, pero eso no es lo que busco.



esta configuración funciona para 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

Respuestas:


91

El punto no es utilizar los accesos directos Cmd-C/ Cmd-V. Tengo el mismo problema proveniente de IntelliJ, y poder duplicar líneas Cmd-Dy eliminarlas Cmd-Yes un gran ahorro de tiempo.

Me ha estado molestando desde entonces. Sin embargo, parece que alguien más ha encontrado una solución que funciona.

En resumen, cree un archivo ~/Library/KeyBindings/PBKeyBinding.dictcon el siguiente contenido y reinicie Xcode.

{
    "^$K" = (
        "selectLine:",
        "cut:"
    );

    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:",
        "deleteBackward:"
    );
}

Esto creará dos accesos directos: Ctrl- Shift- Kpara borrar la línea actual y Ctrl- Shift- Dpara la duplicación de la línea actual. Tenga en cuenta que esto solo funcionará si NO está utilizando un conjunto de enlaces de teclas personalizado en Xcode. Cambie a "XCode Default" y las cosas deberían funcionar. Probado en XCode 3.2 en Snow Leopard.

Más información sobre las combinaciones de teclas de Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html


55
Esta debería ser la verdadera respuesta. Por cierto, si desea importar el acceso directo cmd-d (eliminar línea) desde Eclipse, primero deberá cambiar el acceso directo Agregar marcador en el menú de edición en XCode
Chris R

@joshperry, ¿algo que funcione con Xcode 4+? El Duplicatecomando (in Edit -> Duplicate) parece estar "siempre" en gris (y no para duplicar la línea).
Blaz

He usado OS X desde el primer día y nunca supe sobre las asociaciones de teclas. Qué característica tan genial. Eche un vistazo a este editor de enlaces de teclas GUI muy agradable que encontré .
Alex Gray

Encontró más información en el sitio de desarrolladores de Apple .
aleclarson

sonó genial, pero parece que no funcionó para mí en Xcode 5.0.2 :(
voghDev

105

Para eliminar una línea : Ctrl-A para ir al principio de la línea, luego Ctrl-K para eliminarla y otra vez Ctrl-K para eliminar la línea vacía. (No uso Xcode muy a menudo, pero estoy acostumbrado a eso en Emacs y otras entradas de texto con enlaces tipo Emacs, y parece que también funciona en Xcode).

Y para duplicar una línea : no conozco muchos programas que tengan un comando para eso, pero generalmente solo uso Copiar + Pegar, en Xcode es como CUA: Ctrl+A para ir al comienzo de la línea,Shift + para seleccionar él, Comando + Cpara copiar y Comando + * Vpara pegar dos veces (una vez anulando la línea y una vez añadiéndole).

(de una persona que escribe y edita texto todo el tiempo, muy a menudo en diferentes programas, y ocasionalmente se enoja por tener que distraerse con un widget tonto mientras hace una pequeña corrección en una entrada de texto, que simplemente no puede evitar recordar estas secuencias y hábitos)


3
Esto funcionará en todas las aplicaciones que usan Cocoa para la entrada de texto, ya que es una característica del Sistema de Texto de Cocoa. Hay muchos más accesos directos como este, una lista de ellos se puede encontrar aquí: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti

2
'yank' debería ser ctrl + Y en Macs modernos.
CarmeloS

Comando-V para pegarlo y volver a sangrar. Control -Y también pegará pero no volverá a sangrar el texto pegado.
Scott Gardner

77

Eliminar una línea como eclipse CTRL+D (probado en Xcode 4.5.1):

En primer lugar, cambie estos derechos:

sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/

Abra /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plistcon Xcode y agregue esta nueva entrada:

deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:

ingrese la descripción de la imagen aquí

Reinicie Xcode y abra Xcode> Preferencias> Asignaciones de teclas. Encuentra tu macro y define una tecla abreviada:

ingrese la descripción de la imagen aquí


55
Si desea agregar una forma de Duplicar una línea, haga lo mismo, pero al pegar el nuevo valor en el archivo IDETextKeyBindingSet.plist, pegue este código "selectLine :, copy :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward: ".
jollyr0ger

+1 Esta solución funcionó pero en Xcode 4.6.1 ^ D entró en conflicto con otras asociaciones de teclas existentes.
bernardn

¿Cómo puede obtener eso para 'Duplicar línea actual'?
Markus

Esto no funciona en xcode 6. Solo se llama a la primera función de la lista
Mrug

1
Me encanta, funciona como un encanto para mí en XCode 6.3.1.
fwielstra

9

Probé la solución de las combinaciones de teclas, pero no pude hacer que funcionara. Sin embargo, editar mis asociaciones de teclas XCode funciona de maravilla. Así es como lo hice.

¡Esta solución no altera el contenido del Portapapeles!

Abra las asociaciones de teclas XCode:

texto alternativo

En el cuadro de diálogo Editar guiones de usuario:

  1. Duplique la secuencia de comandos "Mover línea hacia abajo" y cámbiele el nombre
  2. Duplique el archivo "Move Line Down.scpt", cambie el nombre del script, seleccione el archivo mediante (doble clic) en el Editor de Script
  3. Edite la secuencia de comandos (Abre "AppleScript Editor") y elimine el pasaje "eliminar (párrafos startLine a endLine)".
  4. Si no desea reiniciar XCode, parece que tiene que eliminar y volver a agregar el script. Asegúrese de tener "Salida" configurada en "Descartar salida", de lo contrario tendrá un "(nulo)" en su archivo fuente
  5. Modifiqué un poco los guiones un poco más para tener las líneas correctas seleccionadas:

Línea duplicada:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range

    if startLine > 1 then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        make new paragraph at beginning of paragraph (startLine) with data theText
        set selected paragraph range to {endLine + 1, endLine + endLine - startLine + 1}
    else
        beep 1
    end if
end tell
end using terms from

Duplicar línea abajo:

using terms from application "Xcode"
tell first text document
    set {startLine, endLine} to selected paragraph range
    if endLine < (count paragraphs) then
        set theText to (paragraphs startLine through endLine)
        set theText to (theText as string)
        (* delete (paragraphs startLine through endLine) *)
        make new paragraph at beginning of paragraph (endLine + 1) with data theText
        set selected paragraph range to {startLine, endLine}
    else
        beep 1
    end if
end tell
end using terms from

texto alternativo


2
No se menciona claramente anteriormente, hay secuencias de comandos existentes para Eliminar línea, Mover línea arriba y Mover línea abajo. La respuesta aceptada tiene el inconveniente de que solo funciona si tiene sus combinaciones de teclas configuradas en XCode Default. El uso de scripts le permite mantener sus combinaciones de teclas personalizadas, ya que las combinaciones de teclas para scripts se manejan por separado de las del resto de XCode.
Patógeno el

7

OK, así que tuve esto funcionando por un tiempo y de repente se rompió. Ahora me he combinado de diferentes publicaciones aquí y he encontrado una solución que funciona para XCode 6.3.1.

  1. Ve a /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/con Finder.

  2. busque la carpeta llamada Recursos. Haga clic con el botón derecho, presione Obtener información, desbloquee la configuración de compartir y permisos (Al presionar el bloqueo) y configúrelo en Leer y escribir para todos.

  3. Ingrese la carpeta y busque el archivo IDETextKeyBindingSet.plist. Haga clic con el botón derecho, presione Obtener información, desbloquee la configuración de compartir y permisos (Al presionar el bloqueo) y configúrelo en Leer y escribir para todos.

  4. Abra el archivo con XCode (predeterminado)

  5. Encuentre eliminaciones, haga clic derecho y agregue una nueva fila. Póngale un nombre, por ejemplo, Eliminar línea. En el campo Valor, escriba: selectLine:, deleteBackward:. (Esto también se puede hacer por línea duplicada: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Inicie XCode, vaya a preferencias / combinaciones de teclas y busque Eliminar línea. Establecer acceso directo. Disfrutar.

6

Como Xcode 4 hace que esto sea difícil de implementar usando las combinaciones de teclas, he recurrido al uso de Keyboard Maestro ( Quickeys también debería funcionar bien, pero no es totalmente compatible con Lion). Por ejemplo, aquí está mi atajo de Keyboard Maestro (vinculado a ⌘-⇧-D):

http://bit.ly/thC6yf


3
"Compre ahora por $ 36" ... qué robo) jaja ... hasta que vi esto en el sitio Maestro, pensé que podría ser una buena solución
ycomp

@ycomp, aquí hay una solución gratuita .
Blaz

5

Para eliminar la línea en Xcode 10.1, siga los pasos de la siguiente captura de pantalla para agregar una tecla de acceso directo.

ingrese la descripción de la imagen aquí


5

Sé que este hilo es bastante antiguo, pero encontré otra solución con BetterTouchTool , puede ejecutar la secuencia Ctrl+ A, Ctrl+ K, Ctrl+ Ken un acceso directo configurando así en BTT:

ingrese la descripción de la imagen aquí

(Use el botón Adjuntar acción adicional para agregar el segundo y tercer acceso directo)

PD: Viniendo de Eclipse donde Cmd+ Des la línea de eliminación ^^


4

Haga clic tres veces para seleccionar la línea completa, comando-c para seleccionar y comando-v dos veces para duplicarla. No es una función Xcode, es solo parte del sistema operativo.


2
Clic del mouse e incluso peor, ¿triple? Seguramente esa no es la solución que la gente que quiere usar los atajos de teclado está buscando.
Ixx

4

Utiliza scripts de usuario.

Todavía hay scripts para mover y eliminar líneas. Debe definir las combinaciones de teclas para esos scripts (menú Scripts -> Editar scripts de usuario ...Debe definir enlaces de , en xCode 3.2).

Para duplicar la línea, debe crear su propio script. ¡Pero es muy simple! Duplique la secuencia de comandos "Mover línea hacia abajo" y elimine la línea que elimina el texto seleccionado:

delete (paragraphs startLine through endLine)

3

Hay una solución para la duplicación de línea XCode4 sobre aquí

También agregué la eliminación de línea al plist:

<key>Remove Line</key> <string>selectLine:, deleteBackward:</string>


3

Estamos en Xcode 9.0 y las combinaciones de teclas todavía no funcionan. Suspiro.

Encontré esta esencia muy útil, así que volví a publicarla aquí para referencia futura:

  1. Abierto /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Agregue el siguiente fragmento de XML a este archivo justo encima de la parte inferior </dict>
  3. Vaya a Preferencias de Xcode -> Vinculaciones de teclas -> pestaña Texto -> Desplácese hasta que vea Duplicación
  4. Haga clic en Duplicar línea actual, agregue un acceso directo para ella, por ejemplo. Cmnd + D (resuelve cualquier enlace duplicado)
  5. Abrir Xcode

<key>Duplication</key> <dict> <key>Duplicate Current Line</key> <string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string> <key>Duplicate Lines</key> <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string> <key>Delete Line</key> <string>selectLine:, deleteBackward:</string> </dict>



2

La solución de damien.flament funciona muy bien y es posible que necesite configurar la salida como "Descartar salida", vea la imagen a continuación

Configuración de guiones de usuario

PD: No sé cómo comentar su respuesta.


2

Como se dijo anteriormente, cierre XCode e inserte lo siguiente ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysdentro <dict>de la <key>text</key>sección:

    <key>^D</key>                                                                                                      
    <array>                                                                                                            
        <string>moveToLeftEndOfLine:</string>                                                                               
        <string>deleteToEndOfLine:</string>                                                                                      
    </array>                                                                                                           
    <key>^K</key>                                                                                                      
    <array>                                                                                                            
       <string>selectLine:</string>                                                                               
       <string>copy:</string>                                                                                     
       <string>moveToEndOfLine:</string>                                                                          
       <string>insertNewline:</string>                                                                            
       <string>paste:</string>                                                                                    
       <string>deleteBackward:</string>                                                                           
    </array>

Inicie XCode y disfrute CTRL- SHIFT- Dy CTRL- SHIFT- K.
Si quieres CTRL- Dy CTRL- K, usa ^dy^k en definiciones clave. Asegúrese de que no haya enlaces de teclas duplicados en el archivo.

Funciona bien para mí con XCode 3.2


2

Esto es posible con BetterTouchTool . CMD + D duplicará una línea. Crea un nuevo atajo como este:

ingrese la descripción de la imagen aquí

Use el botón Adjuntar acción adicional para agregar el segundo y tercer acceso directo


1

Si ya ha personalizado sus asociaciones de teclas Xcode, que tendrá que editar el archivo: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Simplemente agregue las dos matrices (descritas anteriormente) al Root/textdiccionario.


Hola No entiendo muy bien esto, el documento pbxkey es XML, mientras que el archivo ~ / Library / KeyBindings / PBKeyBinding.dict descrito anteriormente es un formato completamente diferente (se parece un poco a JSON). No hay una entrada de raíz / texto en el documento pbxkeys. ¿Es porque estoy usando una versión posterior?
Ben Clayton

1

Tres pasos para eliminar la línea actual (ver demasiado tiempo, pero hacerlo muy rápido: D)

Cmd+ : mover al final de la línea
Cmd+ Delete: eliminar al comienzo de la línea
Delete: eliminar la línea vacía


0

Para Xcode 6.1 llegó a Xcode> Preferencias> Asignaciones de teclas> Texto Y hay "Eliminar hasta el final de la línea" y asigne la tecla que desee.



0

Aún no hay una forma integrada de duplicar líneas, a partir de Xcode 9. Y las combinaciones de teclas personalizadas parecen tener problemas.

Actualización: Xcode 10.0 beta 6 (10L232m) es lo mismo.


0

Ve a esta dirección:

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

y luego copie el archivo IDETextKeyBindingSet.plist en algún lugar y luego abra el archivo copiado e inserte

selectLine :, copy :, paste :, paste: como esta imagen ingrese la descripción de la imagen aquí y guárdela y reemplace el archivo copiado en esta dirección /Aplicaciones/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

luego reinicie xcode, abra las preferencias de xcode, vaya a la pestaña de asignación de teclas, busque una línea duplicada (personalizada) y defina una tecla corta para ella como la imagen a continuación

[1]: https://i.stack.imgur.com/UTeZu.png


De la opinión: Hola, esta publicación no parece proporcionar una respuesta de calidad a la pregunta. Edite su respuesta y mejórela, o simplemente publíquela como comentario.
sɐunıɔ ןɐ qɐp
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.