Xcode duplicar / excluir linha

128

Vindo do Eclipse e tendo sido usado para duplicar linhas o tempo todo, é muito estranho descobrir que o Xcode não tem essa função. Ou faz?

Eu sei que é possível alterar as combinações de teclas em todo o sistema, mas não é isso que eu estou procurando.

verão
fonte
possível duplicata de Xcode: Linha Excluir hot-key
joshperry
Esta configuração funciona para 9,2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

Respostas:

91

O ponto principal é NÃO usar os atalhos Cmd-C/ Cmd-V. Eu tenho o mesmo problema vindo do IntelliJ, e poder duplicar linhas Cmd-De excluí-las com isso Cmd-Yeconomiza muito tempo.

Está me incomodando desde então. No entanto, parece que alguém encontrou uma solução que funciona.

Em resumo, crie um arquivo ~/Library/KeyBindings/PBKeyBinding.dictcom o seguinte conteúdo e reinicie o Xcode.

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

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

Isso criará dois atalhos: Ctrl- Shift- Kpara excluir a linha atual e Ctrl- Shift- Dpara duplicar a linha atual. Observe que isso funcionará se você NÃO estiver usando uma ligação de chave personalizada definida no Xcode. Mude para "XCode Default" e tudo deve funcionar. Testado no XCode 3.2 no Snow Leopard.

Mais informações sobre as combinações de teclas do Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html

Frank Schröder
fonte
5
Essa deve ser a resposta real. Btw - se você quiser importar o atalho cmd-d (excluir linha) do Eclipse, primeiro será necessário alterar o atalho Adicionar Marcador no menu de edição no XCode
Chris R
@joshperry, algo que funcione com o Xcode 4+? O Duplicatecomando (in Edit -> Duplicate) parece estar "sempre" acinzentado (e não para duplicar linha).
Blaz
Eu uso o OS X desde o primeiro dia e nunca soube das combinações de teclas. que recurso interessante. Dê uma olhada neste editor de ligações de teclas da GUI, muito agradável, com o qual me deparei .
Alex Gray
Encontrei mais informações no site de desenvolvedores da Apple .
Aleclarson
parecia ótimo, mas parece que não funcionou para mim no Xcode 5.0.2 :(
voghDev
105

Para excluir uma linha : Ctrl-A para ir para o início da linha, depois Ctrl-K para excluí-la e outra vez Ctrl-K para remover a linha vazia. (Eu não uso o Xcode com muita frequência, mas estou acostumado a isso no Emacs e em outras entradas de texto com ligações do tipo Emacs, e parece funcionar também no Xcode.)

E para duplicar uma linha : eu não conheço muitos programas que possuem um comando para isso, mas geralmente apenas uso Copiar + Colar - no Xcode é semelhante a CUA: Ctrl+A para ir para o início da linha, Shift+ para selecionar -lo, Command + Cpara copiar e Command + * Vpara colar duas vezes (uma vez substituindo a linha e uma vez anexando a ele).

(de uma pessoa que digita e edita texto o tempo todo, com freqüência em programas diferentes, e ocasionalmente fica irritada por ter que se distrair com um widget idiota enquanto faz uma pequena correção em uma entrada de texto, que simplesmente não consegue evitar lembrar essas sequências e hábitos)

Tom Alsberg
fonte
3
Isso funcionará em todos os aplicativos que usam o Cocoa para entrada de texto, já que é um recurso do sistema de texto do cacau. Há muitos mais atalhos como este, uma lista deles pode ser encontrada aqui: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ahti
2
'puxão' deve ser ctrl + Y em Macs modernos.
carmelos
Command-V para colá-lo e recuar. O controle -Y também colará, mas não recuará o texto colado.
9788 Scott Campner
77

Exclua uma linha como eclipse CTRL+ D(testada no Xcode 4.5.1):

Antes de tudo, altere estes direitos:

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.plistcom o próprio Xcode e adicione esta nova entrada:

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

insira a descrição da imagem aqui

Reinicie o Xcode e abra o Xcode> Preferências> KeyBindings. Encontre sua macro e defina uma tecla de atalho:

insira a descrição da imagem aqui

Opena
fonte
5
Se você deseja adicionar uma maneira de Duplicar uma linha, faça o mesmo, mas ao colar o novo valor no arquivo IDETextKeyBindingSet.plist, cole este código "selectLine :, copy :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward: "
precisa saber é o seguinte
+1 Esta solução funcionou, mas no Xcode 4.6.1 ^ D entrou em conflito com outras associações de teclas existentes.
13Bernardn
Como você consegue isso para 'Duplicate current line'?
Markus
Isso não está funcionando no xcode 6. Somente a primeira função é chamada da lista
Mrug 25/02/2015
1
Adoro, funciona como um encanto para mim no XCode 6.3.1.
Fwielstra
9

Tentei a solução de atalhos de teclas, mas não consegui fazê-lo funcionar. No entanto, editar minhas ligações de teclas XCode funciona como um encanto. Aqui está como eu fiz isso.

Esta solução não altera o conteúdo da área de transferência!

Abra as associações de teclas XCode:

texto alternativo

Na caixa de diálogo Editar scripts do usuário:

  1. Duplique o script "Move Line Down" e renomeie-o
  2. Duplique o arquivo "Move Line Down.scpt", renomeie o script, selecione o arquivo via (clique duas vezes) no Editor de Script
  3. Edite o script (abre "AppleScript Editor") e remova a passagem "delete (parágrafos startLine a endLine)".
  4. Se você não deseja reiniciar o XCode, parece necessário remover e adicionar novamente o script. Certifique-se de ter "Saída" definido como "Descartar saída", caso contrário, você terá um "(nulo)" em seu arquivo de origem
  5. Modifiquei levemente os scripts um pouco mais para selecionar as linhas corretas:

Linha 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

Linha duplicada abaixo:

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

leviatã
fonte
2
Não mencionado claramente acima, existem scripts existentes para Excluir linha, Mover linha para cima e Mover linha para baixo. A resposta aceita tem a desvantagem de que só funciona se você tiver as combinações de teclas definidas como XCode Default. O uso de scripts permite manter as combinações de teclas personalizadas, uma vez que as combinações de teclas dos scripts são tratadas separadamente das do restante do XCode.
Pathogen
7

OK, então eu trabalhei por um tempo e de repente ele quebrou. Agora eu combinei aqui diferentes posts e encontrei uma solução que funciona para o XCode 6.3.1.

  1. Vá para /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/com o Finder.

  2. encontre a pasta chamada Recursos. Clique com o botão direito do mouse, pressione Obter informações, desbloqueie a configuração de compartilhamento e permissões (pressionando o cadeado) e defina como Leitura e gravação para todos.

  3. Digite a pasta e localize o arquivo IDETextKeyBindingSet.plist. Clique com o botão direito do mouse, pressione Obter informações, desbloqueie a configuração de compartilhamento e permissões (pressionando o cadeado) e defina como Leitura e gravação para todos.

  4. Abra o arquivo com XCode (padrão)

  5. Encontre exclusões, clique com o botão direito do mouse e adicione uma nova linha. Nomeie-o, por exemplo, Excluir linha. No campo valor, digite: selectLine:, deleteBackward:. (Isso também pode ser feito para a linha duplicada: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. Inicie o XCode, vá para preferências / combinações de teclas e pesquise Excluir linha. Definir atalho. Aproveitar.
Joakim
fonte
6

Como o Xcode 4 dificulta a implementação usando o pressionamento de teclas, eu usei o Keyboard Maestro (o Quickeys também deve funcionar bem, mas não é totalmente compatível com o Lion). Por exemplo, aqui está o atalho do Keyboard Maestro (vinculado a ⌘-⇧-D):

http://bit.ly/thC6yf

raheel
fonte
3
"Compre agora por US $ 36" ... que roubo) lol ... até que eu vi isso no site do Maestro, pensei que poderia ser uma boa solução
ycomp
@ycomp, aqui está uma solução gratuita .
Blaz 27/01
5

Para excluir linha no Xcode 10.1, siga as etapas da captura de tela abaixo para adicionar uma tecla de atalho.

insira a descrição da imagem aqui

Gagandeep Gambhir
fonte
5

Eu sei que esse encadeamento é bastante antigo, mas encontrei outra solução usando o BetterTouchTool , você pode executar a sequência Ctrl+ A, Ctrl+ K, Ctrl+ Kem um atalho, configurando assim no BTT:

insira a descrição da imagem aqui

(Use o botão Anexar ação adicional para anexar o segundo e o terceiro atalho)

PS: Vindo do Eclipse, onde Cmd+ Dé excluir a linha ^^

Laurent Meyer
fonte
4

Clique três vezes para selecionar a linha inteira, comando-c para selecionar e comando-v duas vezes para duplicá-la. Não é uma função do Xcode, é apenas parte do sistema operacional.

Paul Tomblin
fonte
2
Clique do mouse e até pior, triplo? Essa certamente não é a solução que as pessoas que desejam usar atalhos de teclado estão procurando.
Ixx
4

Use scripts de usuário.

Ainda existem scripts para mover e excluir linhas. É necessário definir as combinações de teclas para esses scripts (menu Scripts -> Editar scripts do usuário ... , no xCode 3.2).

Para duplicar a linha, você deve criar seu próprio script. Mas é muito simples! Duplique o script "Mover linha para baixo" e remova a linha que exclui o texto selecionado:

delete (paragraphs startLine through endLine)
Damien Flament
fonte
3

Há uma solução para duplicação de linha XCode4 por aqui

Também adicionei a exclusão de linha ao plist:

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

MartinMcB
fonte
3

Estamos no Xcode 9.0 e as combinações de teclas ainda não estão funcionando. Suspiro.

Eu achei essa essência muito útil, então, repita-a aqui para referência futura:

  1. Abrir /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. Adicione o seguinte snippet XML a esse arquivo logo acima da parte inferior </dict>
  3. Vá para Preferências do Xcode -> Ligações de teclas -> guia Texto -> Role até ver Duplicação
  4. Clique em Duplicar linha atual, adicione um atalho para ela, por exemplo. Cmnd + D (resolver quaisquer ligações duplicadas)
  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>

Jannie Theunissen
fonte
3

Não há necessidade de modificar o Xcode. Você pode apenas usar a extensão Xcode Linex

insira a descrição da imagem aqui

Aladin
fonte
impressionante ! solução greate
Thomas Besnehard 8/17
2

A solução damien.flament funciona muito bem e você pode precisar definir a saída como "Descartar saída", veja a figura abaixo

Configuração de scripts de usuários

PS: Não sei como comentar sua resposta.

palaniraja
fonte
2

Como dito acima, feche o XCode e insira o seguinte para ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeysdentro <dict>na <key>text</key>seção:

    <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 o XCode e aproveite CTRL- SHIFT- De CTRL- SHIFT- K.
Se você quiser CTRL- De CTRL- K, use ^de ^knas principais definições. Verifique se não há ligações de teclas duplicadas no arquivo.

Funciona bem para mim com o XCode 3.2

askh
fonte
2

Isso é possível usando o BetterTouchTool . CMD + D duplicará uma linha. Crie um novo atalho como este:

insira a descrição da imagem aqui

Use o botão Anexar ação adicional para anexar o segundo e o terceiro atalho

Adam Studenic
fonte
1

Se você já personalizou suas teclas Xcode, você terá que editar o arquivo: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Basta adicionar as duas matrizes (descritas acima) ao Root/textdicionário.

MonsieurDart
fonte
Hiya. Eu não sigo exatamente isso, o documento pbxkey é XML, enquanto o arquivo ~ / Library / KeyBindings / PBKeyBinding.dict descrito acima é um formato totalmente diferente (parece um pouco com JSON). Não há uma entrada de raiz / texto no documento pbxkeys. É porque estou usando uma versão posterior?
Ben Clayton
1

Três etapas para excluir a linha atual (veja por muito tempo, mas faça muito rápido: D)

Cmd+ : mover para o final da linha
Cmd+ Delete: excluir para iniciar a linha
Delete: excluir linha vazia

huync
fonte
0

Para o Xcode 6.1, acesse Xcode> Preferences> KeyBindings> Text E existe "Delete to End of Line" e atribua a chave desejada.

SpyZip
fonte
0

O plugin de linha de exclusão do XCodePlus, é um XCode que faz isso por você. Ele veio pré-instalado com o gerenciador de pacotes Alcatraz ...

https://github.com/payliu/XcodePlus

Joakim
fonte
0

Ainda não existe uma maneira integrada de duplicar linhas, a partir do Xcode 9. E as combinações de teclas personalizadas parecem ter problemas.

Atualização: Xcode 10.0 beta 6 (10L232m) é o mesmo.

erkanyildiz
fonte
0

Vá para este endereço:

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

copie o arquivo IDETextKeyBindingSet.plist em alguns locais e abra o arquivo copiado e insira

selecioneLinha :, copie :, cole :, cole: como esta imagem, digite a descrição da imagem aqui e salve-a e substitua o arquivo copiado neste endereço /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

em seguida, reinicie o xcode, abra as preferências do xcode, vá para a guia de combinação de teclas, procure uma linha duplicada (personalizada) e defina a tecla de atalho como na imagem abaixo

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

Khatereh
fonte
Da avaliação: Olá, este post não parece fornecer uma resposta de qualidade à pergunta. Edite sua resposta e melhore-a ou apenas poste-a como um comentário.
sɐunıɔ ןɐ qɐp