Xcode 복제 / 삭제 라인


답변:


91

요점은 Cmd-C/ Cmd-V바로 가기 를 사용하지 않는 것 입니다. IntelliJ에서 똑같은 문제가 발생하여 줄을 복제 Cmd-D하고 삭제할 수있는 Cmd-Y것이 시간 절약에 큰 도움이됩니다.

그 이후로 나를 괴롭 혔습니다. 그러나 다른 사람이 작동 하는 솔루션 을 찾은 것처럼 보입니다 .

간단히 말해서, ~/Library/KeyBindings/PBKeyBinding.dict다음 내용 으로 파일 을 작성하고 Xcode를 다시 시작하십시오.

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

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

이 두 개의 바로 가기를 만들 것입니다 Ctrl- Shift- K현재 행을 삭제과 Ctrl- Shift- D현재 행을 복제합니다. 이것은 Xcode에서 사용자 정의 키 바인딩 세트를 사용 하지 않는 경우 에만 작동합니다 . "XCode Default"로 전환하면 작동합니다. Snow Leopard의 XCode 3.2에서 테스트되었습니다.

Mac OS X 키 바인딩에 대한 추가 정보 : http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html


5
이것이 실제 답변이되어야합니다. Btw-Eclipse에서 cmd-d (행 삭제) 단축키를 가져 오려면 먼저 XCode의 편집 메뉴에서 책갈피 추가 단축키를 변경해야합니다.
Chris R

@ joshperry, Xcode 4 이상에서 작동하는 것이 있습니까? Duplicate(의 명령 Edit -> Duplicate) "항상"회색 (및 중복 행을 의미하지 않음) 것으로 보인다.
Blaz

나는 첫날부터 OS X를 사용해 왔으며 키 바인딩에 대해 알지 못했습니다. 정말 멋진 기능입니다. 내가 일어났던이 멋진 GUI 키 바인딩 편집기를 살펴보십시오 .
Alex Gray

Apple 개발자 사이트 에서 자세한 정보를 찾았습니다 .
aleclarson


105

행을 삭제하려면 : Ctrl- A 의 시작으로 이동 한 다음 Ctrl-K 행 을 삭제하고 다시 Ctrl-K 빈 행을 제거하십시오. (Xcode를 자주 사용하지는 않지만 Emacs와 Emacs와 같은 바인딩을 가진 다른 텍스트 입력에서 익숙합니다 .Xcode에서도 작동하는 것 같습니다.)

그리고 라인을 복제하는 내가 그에 대한 명령이 많은 프로그램의 모르겠지만, 일반적으로 그냥 복사를 사용 + 붙여 넣기 - 엑스 코드에서이 CUA-같다 : Ctrl+는A 줄의 시작 부분으로 이동, Shift+ 선택 이를 복사하려면 Command + C를, Command + * V를 두 번 붙여 넣으십시오 (한 번 무시하고 한 번 추가).

(종종 다른 프로그램에서 텍스트를 항상 입력하고 편집하는 사람이 종종 텍스트 입력을 약간 수정하면서 바보 같은 위젯으로 자신을 산만하게하는 것에 화가 나면 이러한 시퀀스를 기억하지 않아도됩니다. 그리고 습관)


3
이것은 Cocoa Text System의 기능이기 때문에 텍스트 입력에 Cocoa를 사용하는 모든 응용 프로그램에서 작동합니다. 이 같은 더 많은 단축키가 있으며, 그 목록은 여기에서 찾을 수 있습니다 : hcs.harvard.edu/~jrus/Site/System%20Bindings.html :
Ahti

2
최신 Mac에서는 'yank'가 ctrl + Y 여야합니다.
CarmeloS

붙여넣고 다시 들여 쓰기위한 Command-V Control -Y는 붙여 넣은 텍스트를 붙여 넣지 만 다시 들여 쓰지 않습니다.
Scott Gardner

77

이클립스 CTRL+ 와 같은 줄을 삭제하십시오 D(Xcode 4.5.1에서 테스트 됨) :

우선 다음 권리를 변경하십시오.

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

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

열기 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist엑스 코드와 자신을이 새로운 항목을 추가 :

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

여기에 이미지 설명을 입력하십시오

Xcode를 다시 시작하고 Xcode> 환경 설정> 키 바인딩을여십시오. 매크로를 찾아서 단축키를 정의하십시오.

여기에 이미지 설명을 입력하십시오


5
행을 복제하는 방법을 추가하려면 동일하게 수행하지만 IDETextKeyBindingSet.plist 파일에 새 값을 붙여 넣을 때이 코드를 "selectLine :, copy :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward : ".
jollyr0ger

+1이 솔루션은 효과가 있었지만 Xcode 4.6.1 ^ D에서는 다른 기존 키 바인딩과 충돌했습니다.
bernardn

'중복 회선'에 대해 어떻게 알 수 있습니까?
Markus

이것은 xcode 6에서 작동하지 않습니다. 첫 번째 함수 만 목록에서 호출됩니다
Mrug

1
나는 그것을 좋아하고 XCode 6.3.1에서 나를 위해 매력처럼 작동합니다.
fwielstra

9

키 바인딩 솔루션을 시도했지만 작동하지 못했습니다. 그러나 내 XCode 키 바인딩을 편집하면 매력처럼 작동합니다. 내가 만든 방법은 다음과 같습니다.

이 솔루션은 클립 보드의 내용을 변경하지 않습니다!

XCode 키 바인딩을 엽니 다.

대체 텍스트

사용자 스크립트 편집 대화 상자에서 :

  1. "Move Line Down"스크립트를 복제하고 이름을 바꿉니다.
  2. "Move Line Down.scpt"파일을 복제하고 스크립트 이름을 바꾸고 스크립트 편집기에서 (두 번 클릭)을 통해 파일을 선택하십시오.
  3. 스크립트를 편집하고 ( "AppleScript 편집기"를 엽니 다) "삭제 (단락 줄 startLine 통해 endLine)"구절을 제거하십시오.
  4. XCode를 다시 시작하지 않으려면 스크립트를 제거했다가 다시 추가해야합니다. "Output"이 "Discard Output"으로 설정되어 있는지 확인하십시오. 그렇지 않으면 소스 파일에 "(null)"이 있습니다.
  5. 올바른 줄을 선택하도록 스크립트를 약간 더 수정했습니다.

중복 된 라인업 :

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

중복 된 줄 다운 :

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

대체 텍스트


2
위에서 명확하게 언급되지 않은 줄 삭제, 줄 위로 이동 및 줄 아래로 이동에 대한 기존 스크립트가 있습니다. 허용되는 답변에는 키 바인딩이 XCode Default로 설정된 경우에만 작동한다는 단점이 있습니다. 스크립트의 키 바인딩은 나머지 XCode의 키 바인딩과 별도로 처리되므로 스크립트를 사용하면 사용자 정의 된 키 바인딩을 유지할 수 있습니다.
병원체

7

좋아, 그래서 나는 잠시 동안이 일을 한 다음 갑자기 파산했다. 이제 다른 게시물에서 결합하여 XCode 6.3.1에서 작동하는 솔루션을 찾았습니다.

  1. /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Finder로 이동하십시오 .

  2. Resources라는 폴더를 찾으십시오. 마우스 오른쪽 버튼으로 클릭하고 정보 입수를 누르고 공유 및 권한 설정을 잠금 해제하고 (잠금을 눌러) 읽기 및 쓰기로 설정하십시오.

  3. 폴더를 입력하고 IDETextKeyBindingSet.plist 파일을 찾으십시오. 마우스 오른쪽 버튼으로 클릭하고 정보 입수를 누르고 공유 및 권한 설정을 잠금 해제하고 (잠금을 눌러) 읽기 및 쓰기로 설정하십시오.

  4. XCode로 파일 열기 (기본값)

  5. 삭제를 찾아 마우스 오른쪽 단추로 클릭하고 새 행을 추가하십시오. 예를 들어 Delete Line과 같이 이름을 지정하십시오. 값 필드에 다음을 입력하십시오 selectLine:, deleteBackward:.. (이것은 중복 행에 대해서도 수행 할 수 있습니다. selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. XCode를 시작하고 환경 설정 / 키 바인딩으로 이동하여 라인 삭제를 검색하십시오. 바로 가기를 설정합니다. 즐겨.

6

Xcode 4가 키 바인딩을 사용하여 구현하기가 어려워 지면서 키보드 Maestro 를 사용했습니다 ( Quickeys 도 잘 작동하지만 완전히 Lion 호환되지는 않습니다). 예를 들어 다음은 키보드 마에스트로 단축키입니다 (⌘-⇧-D에 바인딩 됨).

http://bit.ly/thC6yf


3
나는 마에스트로 사이트에이를 볼 때까지 "지금 구매 $ 36 ..."도둑질 무엇을) ... 롤, 나는 그것이 좋은 해결책이 될 줄 알았는데
ycomp

@ycomp, 여기에 무료 솔루션이 있습니다.
Blaz

5

Xcode 10.1에서 줄을 삭제하려면 아래 스크린 샷의 단계에 따라 바로 가기 키를 추가하십시오.

여기에 이미지 설명을 입력하십시오


5

이 스레드는 꽤 오래되었지만 BetterTouchTool 을 사용하는 다른 솔루션을 찾았습니다 .BTT 에서 다음 과 같이 구성하여 하나의 바로 가기에서 Ctrl+ A, Ctrl+ K, Ctrl+ K시퀀스를 실행할 수 있습니다 .

여기에 이미지 설명을 입력하십시오

추가 작업 첨부 버튼을 사용하여 두 번째 및 세 번째 단축키를 추가하십시오.

추신 : Cmd+ D는 삭제 줄 인 Eclipse에서 ^^


4

세 번 클릭하여 전체 행을 선택하고 command-c를 선택하고 command-v를 두 번 클릭하여 복제합니다. Xcode 기능이 아니며 OS의 일부입니다.


2
마우스 클릭과 더 나쁜 트리플? 바로 가기 키를 사용하려는 사람들이 찾고있는 솔루션은 아닙니다.
Ixx

4

사용자 스크립트를 사용하십시오.

행을 이동하고 삭제하는 스크립트가 있습니다. 해당 스크립트에 대한 키 바인드를 정의해야합니다 ( xCode 3.2에서 메뉴 스크립트 -> 사용자 스크립트 편집 ... ).

줄을 복제하려면 자신 만의 스크립트를 만들어야합니다. 그러나 매우 간단합니다! "줄 아래로 이동"스크립트를 복제하고 선택한 텍스트를 삭제하는 줄을 제거하십시오.

delete (paragraphs startLine through endLine)

3

여기에 XCode4 라인 복제 솔루션이 있습니다.

또한 plist에 줄 삭제를 추가했습니다.

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


3

우리는 Xcode 9.0에 있고 키 바인딩이 여전히 작동하지 않습니다. 한숨.

나는 발견 이 요지 매우 도움이 그래서 미래의 참조를 위해 여기를 다시 게시 :

  1. 열다 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. 맨 아래 바로 위에있는이 파일에 다음 XML 스 니펫을 추가하십시오. </dict>
  3. Xcode 환경 설정-> 키 바인딩-> 텍스트 탭-> 중복이 나타날 때까지 스크롤하십시오.
  4. 현재 줄 복제를 클릭하고 바로 가기를 추가하십시오 (예 : Cmnd + D (중복 바인딩 해결)
  5. 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

damien.flament 의 솔루션은 훌륭하게 작동하며 출력 을 "Discard Output"으로 설정해야 할 수도 있습니다. 아래 그림을 참조하십시오.

사용자 스크립트 설정

추신 : 나는 그의 대답에 대해 언급하는 방법을 모른다.


2

위에서 말했듯이 XCode를 닫고 섹션 ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys내부 <dict>에 다음을 삽입 <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>

시작 엑스 코드와 즐길 CTRL- SHIFT- DCTRL- SHIFT- K.
당신이 원하는 경우 CTRL- DCTRL- K사용 ^d하고 ^k대신 키 정의한다. 파일에 중복 키 바인딩이 없는지 확인하십시오.

XCode 3.2에서 잘 작동합니다.


2

이것은 BetterTouchTool을 사용하여 가능합니다 . CMD + D는 한 줄을 복제합니다. 다음과 같이 새 바로 가기를 만듭니다.

여기에 이미지 설명을 입력하십시오

추가 작업 첨부 버튼을 사용하여 두 번째 및 세 번째 단축키를 추가하십시오.


1

Xcode 키 바인딩을 이미 사용자 정의한 경우 파일을 편집해야합니다 ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. 두 개의 배열 (위에 설명)을 Root/text사전에 추가하십시오 .


히야 나는 이것을 따르지 않습니다 .pbxkey 문서는 XML이지만 위에서 설명한 ~ / Library / KeyBindings / PBKeyBinding.dict 파일은 완전히 다른 형식입니다 (JSON과 약간 비슷 함). pbxkeys 문서에 루트 / 텍스트 항목이 없습니다. 최신 버전을 사용하고 있기 때문입니까?
Ben Clayton

1

현재 줄을 삭제하는 세 단계 (너무 길지만 매우 빠른 : D)

Cmd+ : 라인의 끝으로 이동
Cmd+는 Delete라인의 시작 삭제합니다
Delete: 삭제 빈 줄


0

Xcode 6.1의 경우 Xcode> 환경 설정> 키 바인딩> 텍스트로 이동하여 "행 끝으로 삭제"가 있으며 원하는 키를 지정하십시오.



0

Xcode 9부터는 줄을 복제하는 기본 제공 방법이 없습니다. 사용자 정의 키 바인딩에는 문제가있는 것 같습니다.

업데이트 : Xcode 10.0 베타 6 (10L232m)은 동일합니다.


0

이 주소로 이동하십시오 :

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

IDETextKeyBindingSet.plist 파일을 특정 위치에 복사 한 다음 복사 된 파일을 열고 삽입하십시오.

selectLine :, copy :, paste :, paste :이 그림과 같이 여기에 이미지 설명을 입력 하고 저장하고이 주소에 복사 된 파일을 대체합니다. /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

그런 다음 xcode를 다시 시작하고 xcode prefences를 열고 keybinding 탭으로 이동하여 중복 된 행을 검색하고 아래 이미지와 같이 짧은 키를 정의하십시오.

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


검토에서 : 안녕하세요,이 게시물은 질문에 대한 품질 답변 을 제공하지 않는 것 같습니다 . 답변을 수정하여 개선하거나 의견으로 게시하십시오.
sɐunıɔ ןɐ qɐp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.