xcode line duplicate-data

Xcode duplicar/eliminar línea



line duplicate-data (20)

Viniendo de Eclipse y habiendo sido usado para duplicar líneas todo el tiempo, es bastante extraño descubrir que Xcode no tiene esa 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.


Como Xcode 4 hace esto difícil de implementar mediante el uso de enlaces de teclas, he recurrido al uso de Keyboard Maestro ( Quickeys debería funcionar bien, pero no es completamente compatible con Lion). Por ejemplo, aquí está mi acceso directo de Keyboard Maestro (vinculado a ⌘-⇧-D):

http://bit.ly/thC6yf


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

<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 de CTRL - SHIFT - D y CTRL - SHIFT - K.
Si quiere CTRL - D y CTRL - K , use ^d y ^k en las definiciones clave en su lugar. Asegúrese de que no haya enlaces duplicados en el archivo.

Funciona bien para mí con XCode 3.2


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.plist con Xcode y agregue esta nueva entrada:

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

Reinicie Xcode y abra Xcode> Preferences> KeyBindings. Encuentra tu macro y define una shortkey:


Estamos en Xcode 9.0 y las combinaciones de teclas todavía no están funcionando. Suspiro.

Encontré esta idea muy útil, así que la volví a publicar aquí para futuras referencias:

  1. Abra /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Agregue el siguiente fragmento XML a este archivo justo arriba de la parte inferior </dict>
  3. Vaya a Preferencias de Xcode -> Enlaces de teclas -> pestaña Texto -> Desplácese hasta ver Duplicación
  4. Haga clic en Duplicar línea actual, agregue un acceso directo para ello, ej. Cmnd + D (resolver cualquier enlace duplicado)
  5. Abre 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>


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

Use el botón Adjuntar acción adicional para anexar el segundo y tercer atajo


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


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

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

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


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

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


No es necesario modificar Xcode. Puedes usar la extensión Xcode Linex


OK, entonces tuve esto funcionando por un tiempo y de repente se rompió. Ahora combiné diferentes publicaciones aquí y encontré una solución que funciona para XCode 6.3.1.

  1. Vaya a / /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/ with Finder.

  2. encuentra la carpeta llamada Recursos. Haga clic con el botón derecho, presione Obtener información, desbloquee la configuración de uso compartido y permisos (presionando el candado) y configúrelo en Lectura y escritura para todos.

  3. Ingrese la carpeta y encuentre el archivo IDETextKeyBindingSet.plist. Haga clic con el botón derecho, presione Obtener información, desbloquee la configuración de uso compartido y permisos (presionando el candado) y configúrelo en Lectura y escritura para todos.

  4. Abra el archivo con XCode (predeterminado)

  5. Encuentre eliminaciones, haga clic derecho y agregue una nueva fila. Nómbrelo, por ejemplo, Eliminar línea. En el campo de valor, escriba: selectLine:, deleteBackward: (Esto también se puede hacer para líneas duplicadas: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:

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

Para Xcode 6.1, acceda a Xcode> Preferencias> KeyBindings> Texto. Y hay "Eliminar hasta el final de la línea" y asigne la clave que desee.


Probé la solución de enlaces de teclas, pero no pude hacer que funcionara. Sin embargo, la edición de mis enlaces de teclas XCode funciona como un amuleto. Así es como lo hice.

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

Abra los enlaces clave de XCode:

En el cuadro de diálogo Editar scripts del usuario:

  1. Duplique el script "Move Line Down" y renómbrelo
  2. Duplique el archivo "Move Line Down.scpt", cambie el nombre de la secuencia de comandos, seleccione el archivo mediante (doble clic) en el Editor de secuencias de comandos
  3. Edite la secuencia de comandos (se abre "AppleScript Editor") y elimine el pasaje "delete (párrafos startLine hasta 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é ligeramente 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


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

(Use el botón Adjuntar acción adicional para anexar el segundo y tercer atajo)

PD: Procedente de Eclipse donde Cmd+D es eliminar línea ^^


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


Todavía no hay una forma incorporada de duplicar líneas, como en Xcode 9. Y las asociaciones de teclas personalizadas parecen tener problemas.


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 + Eliminar : eliminar para comenzar de línea
Eliminar : eliminar línea vacía


Usa guiones de usuario

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

Para duplicar la línea, debes crear tu propia secuencia de comandos. ¡Pero es muy simple! Duplicar el script "Mover línea hacia abajo" y eliminar la línea que elimina el texto seleccionado:

delete (paragraphs startLine through endLine)



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

Y para duplicar una línea : no conozco muchos programas que tengan un comando para eso, pero usualmente solo uso Copiar + Pegar - en Xcode es como CUA: Ctrl + A para ir al comienzo de la línea, Shift + para seleccionarlo, Comando + C para copiar y Comando + * V para pegar dos veces (una vez que sobrescribe la línea y se agrega a ella).

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


El objetivo no es usar los atajos Cmd-C / Cmd-V . Tengo el mismo problema con IntelliJ, y poder duplicar líneas con Cmd-D y eliminarlas con Cmd-Y es un gran ahorro de tiempo.

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

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

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

Esto creará dos accesos directos: Ctrl - Shift - K para eliminar la línea actual y Ctrl - Shift - D para duplicar 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 asociaciones de teclas de Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html