Sublime Text 2에서 울퉁불퉁 한 가장자리에 여러 개의 커서가있는 직선 열을 들여 쓰려면 어떻게해야합니까?


33

다음과 같이 여러 줄에 여러 개의 커서가 있다고 가정하십시오.

foo|
barr|
foobar|
baz|

다음과 같이 각 줄 끝의 공백을 평평한 가장자리로 자동 밀어 넣을 수 있습니까?

foo    |
barr   |
foobar |
baz    |

(이 예제에서는 |커서가됩니다.)

당신이 방금 Tab또는 Space초기 준비를 할 때, 당신은 이것을 얻습니다 :

foo    |
barr    |
foobar    |
baz    |

유용하지만 내가 찾고있는 것은 아닙니다. 거친 다중 커서 삽입에서 직선 열로 들여 쓰기 할 수있는 일종의 키보드 단축키를 찾고 있습니다.


탭 하나만 삽입해도됩니까?
Darth Android

아니요,하지만 이해하지 못할 수 있습니다. 내 질문을 명확히하기 위해 편집했습니다.
GladstoneKeep

편집 내용은 Space의 기능을 설명하며 선이 많이 변하는 경우 Tab이 어느 정도까지 수행 할 수 있지만 두 줄이 모두 닫히면 커서가 모두 탭 스탑에 있어야합니다. 그것들을 모두 같은 탭 스톱에 맞추려면 약간의 조정을해야 할 수도 있지만 공백으로 조정하는 것보다 적습니다.
다스 안드로이드

이상하다. Tab각 줄의 끝을 누르면 들쭉날쭉 한 멀티 커서 인서트가 직선 열로 들여 쓰기되지만 정규식을 사용하여 동일한 효과를 얻을 수는 없습니다. 후행 공백을 검색 \s*$하여 탭 문자로 바꿨습니다 \t.- 수동 \t으로 누르는 것과 같은 효과를 얻지 못했습니다 Tab.
amiregelz

1
참고로, Sublime Text 2 요청 보드에 기능 요청 으로 게시했습니다 .
GladstoneKeep

답변:


10

wbond의 Sublime Alignment를 사용할 수 있습니다

이를 설정 파일에 추가해야 할 수도 있습니다 (기본 설정> 패키지 설정> 정렬> 설정-사용자 :

// The mid-line characters to align in a multi-line selection, changing
// this to an empty array will disable mid-line alignment
"alignment_chars": ["=", "|"],
// If the following character is matched for alignment, insert a space
// before it in the final alignment
"alignment_space_chars": ["=", "|"]

"|"교체 당신이 정렬하고자하는 문자로.

편집 : mtoast가 찾은 것처럼 "\n""alignment_chars"에 추가 하면 원하는 효과가 나타납니다. "alignment_space_chars"에 줄 바꾸기 문자를 추가하지 않아도되며 텍스트가 삭제 될 수 있습니다. 그러나 제한된 테스트를 통해 차이를 보지 못했습니다.

control각 줄의 끝을 잡고 클릭하십시오. 그런 다음 정렬 단축키를 누릅니다 (Linux의 경우 기본값은 ctrl+ alt+ a). 커서가 가장 먼 커서 위치에 정렬되어 있음을 알 수 있습니다.

Edit2 : 줄 바꿈을 추가하면 "alignment_space_chars"텍스트 블록을 강조 표시하고 Sublime Alignment에서 줄에 정렬 할 다른 것을 찾을 수없는 경우 (등호와 같은) 텍스트를 삭제합니다.

또한 Sublime Alignment에서 정렬 할 다른 항목을 찾을 수없는 경우 줄 바꿈을 추가하면 "alignment_chars"가장 긴 줄이 강조 표시되도록 줄 끝을 공백 (또는 설정에 따라 탭)으로 채 웁니다.


1
와우! Sublime Alignment 패키지를 설치하고 "\n"내 (개행)을 추가 "alignment_chars"하고 원하는 결과를 얻었습니다. (참고 :에 추가하지 않아 "alignment_space_chars"행이 삭제되었습니다.) "n"답변에 특정 제안 ( )을 추가하면 동의합니다.
GladstoneKeep

좋은! : 나 같은 완벽 주의자를위한 매우 유용한 패키지
amiregelz

3
비슷한 패키지가 있습니다 : Align Tabular , 좀 더 유연합니다 (여러 문자를 정렬 할 수 있습니다).
d_rail

d_rail이 위에서 언급 한 AlignTab |을 사용하여 하나의`\` 로 이스케이프해야 합니다.
사용자

나는 이것에 백만 개의 투표가 없다고 믿을 수 없다.
Charles

44

약간의 노력만으로도 사소한 해킹을 사용하여 외부 패키지없이 할 수 있습니다. 방법은 다음과 같습니다.

| 이 지시 사항에서 커서를 나타냅니다.

  1. Ctrl+ 클릭을 사용하거나 텍스트 블록을 선택하고 Ctrl+ Shift+를 눌러 원하는 모든 행에 커서를 만듭니다 L. ( 선택 문서 )

  2. 모든 커서가 열을 원하는 지점에 있거나 그 지점을 지나갈 때까지 모든 단어의 끝에 공백을 추가하십시오 (얼마나 오래지나 갔는지는 상관 없음).

    foo     |
    barr     |
    foobar     |
    baz     |
    
  3. ( 선택 사항 1 ) 공백이 오는 문자를 입력하십시오. 사용하자 c:

    foo     c |
    barr     c |
    foobar     c |
    baz     c |
    
  4. Home커서를 줄의 시작 부분으로 이동하려면 누릅니다 .

    |foo     c
    |barr     c
    |foobar     c
    |baz     c
    
  5. → (right arrow) 커서가 원하는 열이 될 때까지을 누릅니다 .

    foo    | c
    barr   |  c
    foobar |    c
    baz    | c
    
  6. 를 눌러 Ctrl+ Shift+는 다음의 모든 공백을 선택하고 c, 다음을 누릅니다 Delete:

    foo    |
    barr   |
    foobar |
    baz    |
    
  7. ( 선택 사항 1 ) Delete다시 한 번 눌러 선택 사항 단계에서 추가 한 추가 공백 문자를 정리하십시오.


(1) 우리는 사용하는 c우리가 보존 할 라인에 대한 자세한 내용이있는 경우에만 다음에 공백 문자를. 그것이 없으면 Ctrl+ Shift+ 는 줄에 추가 내용의 첫 단어를 선택하여 삭제가 까다로워집니다.


2
처음에는 뒤틀린 것처럼 보이지만 깔끔한 해킹입니다. 적절한 정렬로 열을 붙여 넣기에 좋습니다. 다음 열은 텍스트 페이스트리 플러그인을 사용하여 붙여 넣을 수 있습니다.
사용자

1
나는이 기술을 잠시 동안 사용 했지만 조심해야합니다 . ctrl+shift+right모든 문자를 일관되게 취급하지 않으므로 공백 이상을 선택하게 될 수 있습니다.
예비 바이트

1
정말 깔끔한 트릭입니다. 그러나 나는 마지막에 문자없이 그것을 시도하고 사용 Shift-End Delete했으며 방금 작동했습니다. 어떤 경우에는 작동하지만 다른 경우에는 작동하지 않습니까?
Septagram

이것은 내가 항상하는 일이다 :)
Domino Domino

c한 줄에서 다른 줄의 단어가 끝나기 전에는 작동하지 않습니다 . 내가 지금 겪고있는 문제는 무엇입니까? 특정 줄에는 오른쪽으로 스크롤하기에 충분한 문자가 포함되어 있지 않으므로 다음 줄로 줄 바꿈 하여이 해킹을 그대로 두십시오. 이것은 유용한 포괄 교체가 아닌 해킹입니다.
leetNightshade 1

0

=and 이외의 문자를 들여 쓰려는 사람들을 |위해 Alignment 패키지 를 설치 하고 파일 Sublime Text > Preferences > Package Settings > Alignment > Settings - User을 다음과 같이 수정했습니다 .

{
  "alignment_chars": [
    "{create",
   ]
}

그런 다음 다음 코드를 선택했습니다.

  let!(:admin_user) {create(:admin_user, :admin)}
  let!(:another_admin_user) {create(:admin_user, :admin)}
  let!(:superadmin_user1) {create(:admin_user, :superadmin)}
  let!(:superadmin_user2) {create(:admin_user, :superadmin)}
  let!(:nonadmin_user) {create(:admin_user)}

을 눌러 Command + Ctrl + A정렬합니다.

  let!(:admin_user)        {create(:admin_user, :admin)}
  let!(:another_admin_user){create(:admin_user, :admin)}
  let!(:superadmin_user1)  {create(:admin_user, :superadmin)}
  let!(:superadmin_user2)  {create(:admin_user, :superadmin)}
  let!(:nonadmin_user)     {create(:admin_user)}

모든 것이 {create텍스트가 여전히 정렬되어있는 동안 차지할 수 있는 가장 왼쪽 열로 이동되었습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.