Sublime Text 2 : 요청시 후행 공백 제거


99

Sublime Text 2는 저장할 때 파일의 후행 공백을 삭제할 수 있다는 것을 알고 있습니다.

팀에서 작업하고 파일에 변경 사항을 커밋 할 때 이것은 동료 코드 검토를 더 복잡하게 만드는 큰 차이를 생성하는 경향이 있습니다. 그런 이유로 나는 어쨌든 파일에 큰 변경 사항을 커밋 할 때만 공백 정리를 수행하고 사소한 변경 사항에 대해서는 공백을 그대로 두는 것을 선호합니다.

.NET 이외의 파일 에서 요청시 공백 제거를 실행하는 명령이 있는지 알고 싶습니다 "Activate trimming on save > Save file > Deactivate trimming".

문서 및 stackoverflow에서 검색하면 관련성이 표시되지 않았으며 모든 링크가 저장시 자동 트리밍에 대해 이야기하는 것 같습니다.


1
이것은 직접 귀하의 질문에 대답하지 않습니다,하지만 당신은 버전 제어에 대한 힘내를 사용하는 경우 도움이 될 수 있습니다 : $ mv .git/hooks/pre-commit.sample .git/hooks/pre-commit나는에서 가지고있는 이 블로그 .
폴 Fioravanti

97
동료 Google 직원 : 주문형이 아닌 방법은 다음 설정을 추가하는 것입니다."trim_trailing_white_space_on_save": true
Nate Glenn

3
@Nate Glenn의 의견에 대한 개선 사항으로 Markdown에서 공백을 잘라 내면 문제가 발생할 수 있습니다. 특히 다른 사람의 의도적 인 공백을 잘라내어 알아 차리지 않고 커밋하는 경우 더욱 그렇습니다. Markdown.sublime-settings저장시 전역 트림을 편집 및 비활성화하고 사고를 방지 할 수 있습니다 .
tehfoo

중요 : {} 중괄호 사이에 두 줄 이상이있는 경우 위 줄에 ','를 입력해야합니다. 그렇지 않으면 저장하려고 할 때 오류가 발생합니다.
slindsey3000 2014

1
"팀에서 작업하고 파일에 대한 변경을 커밋 할 때 이것은 동료 코드 검토를 더 번거롭게 만드는 큰 차이를 생성하는 경향이 있습니다."여기서 더 깊은 문제는 후행 공백이있는 커밋이 처음에 리포지토리에 들어가서는 안된다는 것입니다. 이상적으로는 당신이 암시하는 일종의 더러운 패치를 만들기 때문입니다. 코딩 표준에서 후행 공백을 금지하고 린터 / 커밋 후크에서 잘못된 공백으로 커밋을 포착하십시오.
Frank Farmer

답변:


71

주의 :이 플러그인을 사용하면 Sublime Text가 상당히 느려집니다.

나는 이것을 위해 TrailingSpaces 플러그인을 사용합니다.

후행 공백을 강조 표시하고 순식간에 삭제합니다.

ST2는 파일 저장시 후행 공백을 자동으로 삭제하는 방법을 제공합니다. 설정에 따라 강조 표시하거나 직접 삭제하는 것이 더 편리 할 수 ​​있습니다. 이 플러그인은 바로 그것을 제공합니다!

사용법 : "편집 / 후행 공백 / 삭제"를 클릭합니다.

키 바인딩을 추가하려면 "Preferences / Key Bindings-User"를 열고 다음을 추가하십시오.

{ "keys": ["ctrl+alt+t"], "command": "delete_trailing_spaces" }

1
그래, 나는이 대답을 가장 좋아한다 ... 안전한 업그레이드 + 그냥 작동-감사합니다
Rob

1
이 플러그인을 설치 한 후 단어를 찾는 ctrl + F 기능이 느려져서 제거했습니다. 같은 상황이 발생하면 알려주세요.
dennisbot

Ctrl + Shift + T는 이미 Sublime에서 마지막으로 닫힌 탭을 여는 데 사용됩니다. 그래서 저는 Ctrl + Alt + T를 선호합니다
Pawel 2014

5
라는 옵션이 있습니다 trailing_spaces_trim_on_save당신이 설정할 수 true있는가 Preferences > Package Settings > Trailing Spaces > Settings - User. 당신은 내 요구에 더 좋을 찾을 대신 키보드 단축키를 바인딩의이 사용할 수 있습니다
dspacejs

경고 :이 플러그인을 설치하면 큰 파일을 스크롤하는 속도가 상당히 느려집니다.
compie

67

Sublime Text 내에서 빠른 주문형 솔루션을 위해 다음 단계를 사용합니다.

  1. 찾기> 바꾸기 ...
  2. 무엇을 찾다: [ \t]+\n
  3. 다음으로 바꾸기 : \n
  4. 전부 교체

다음을 통해 많은 파일 세트에 대해이 작업을 수행 할 수도 있습니다.

  1. 찾기> 파일에서 찾기 ...
  2. 찾기: [ \t]+\n
  3. 어디:
  4. 바꾸다: \n
  5. 바꾸다

5
이 방법은 마지막 줄을 제외한 모든 줄에 적용됩니다.
Joncom 2014 년

1
@Joncom은 마지막 줄에 대해 정확합니다. Sublime Text 3에서는 \t공백과 일치하지 않는 것 같으므로 작성된 답변은 후행 탭만 제거합니다. 내가 원하는 생각 \s+\n하지만, 참고가 아니라 빈 줄을 삭제하는 것이다. 마지막 줄에서도 공백을 제거하려면 다음 \s+\z과 같이 추가 할 수 있습니다 (\s+\n|\s+\z)..
canhascodez

3
([\t ]+\n|\s+\z)<-는 빈 줄을 제거하지 않습니다.
canhascodez

4
올바른 정규식이되어야하며 [ \t]+$아무것도 바꾸지 마십시오 .
Codesmith

27

정규식을 사용하여 후행 공백을 제거 할 수 있습니다.

  1. 찾기> 바꾸기 ...
  2. 무엇을 찾다: [^\S\r\n]+$
  3. 바꿀 내용 : 비워 둡니다.
  4. '모두 바꾸기'를 클릭하십시오.

[^\S\r\n]+$정규식 "(공백 및 개행 탭 아니지만, 이중 부정 사용 그래서) 라인의 끝 다음에 적어도 하나 개의 공백 문자"를

정규식을 활성화해야합니다. 정규식 사용은 검색 대화 상자입니다.


22

다음은 플러그인이나 설정을 사용하지 않고 대부분의 상황에서 작동하는 매우 간단한 방법입니다.

  1. 다중 선택 및 모든 줄의 끝으로 커서 이동
  2. CTRL-Shift를 누른 상태에서 왼쪽, 오른쪽을 누릅니다.
  3. 이제 줄 끝에있는 공백과 탭을 선택해야합니다. Delete 또는 백 스페이스를 누릅니다.

    -이 시점에서 공백뿐 아니라 (및 +와 같은 특수 문자도 줄 끝에서 선택할 수 있습니다.

모든 라인을 다중 선택하는 방법 :

한 가지 방법은 가운데 마우스 키를 사용하여 세로로 선택한 다음 작은 선택 인 경우 End 키를 누르는 것입니다.

단축키 사용 :

  1. CTRL-A (모두 선택)
  2. CTRL-SHIFT-L (선택한 모든 줄에 커서 놓기)
  3. END (줄 끝으로 이동)

find 함수를 사용하여 공백 문자와 같이 모든 줄에있는 항목을 찾을 수도 있습니다.

  1. \ s (정규식 사용)
  2. 모두 찾기 클릭
  3. 각 줄의 끝에 여러 커서를 가져 오려면 "End"키를 누르십시오.

샘플 텍스트:

text and number     44  more text and a space  
text and number 44  more text and 2 tabs        
text and number 44  more text and no space or tab

text and number 44  more text after a line feed

2
참고 : 마지막 위치에있는 다중 커서가있는 모든 줄을 강조 표시하려면 CTRL + A, CTRL + SHIFT + L, END를 차례로 사용할 수 있습니다.
Richard Marskell-Drackir 2013 년

2
이 기술을 다른 데이터 세트에 사용하면 완벽하지 않다는 것을 알았습니다. Sublime Text는 또한 후행 공백과 함께) 및 +와 같은 특수 문자를 강조 표시합니다. 일부 데이터가 특수 문자로 끝나는 경우주의하십시오.
shanemgrey jul.

2
또한 \s정규식의 FYI 는 공백 문자뿐만 아니라 공백뿐만 아니라 탭과 새 줄 (예 : "공백") 과도 일치합니다. :)
Richard Marskell-Drackir

13

여기에서 soulution을 찾았습니다. http://www.sublimetext.com/forum/viewtopic.php?f=4&t=4958

패키지를 수정할 수 있습니다.

trim_trailing_white_space.py

다음과 같이 기본 패키지 디렉토리에 있습니다.

import sublime, sublime_plugin

def trim_trailing_white_space(view):
    trailing_white_space = view.find_all("[\t ]+$")
    trailing_white_space.reverse()
    edit = view.begin_edit()
    for r in trailing_white_space:
        view.erase(edit, r)
    view.end_edit(edit)

class TrimTrailingWhiteSpaceCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        trim_trailing_white_space(self.view)

class TrimTrailingWhiteSpace(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("trim_trailing_white_space_on_save") == True:
            trim_trailing_white_space(view)

class EnsureNewlineAtEof(sublime_plugin.EventListener):
    def on_pre_save(self, view):
        if view.settings().get("ensure_newline_at_eof_on_save") == True:
            if view.size() > 0 and view.substr(view.size() - 1) != '\n':
                edit = view.begin_edit()
                view.insert(edit, view.size(), "\n")
                view.end_edit(edit)

이제 키맵 구성에 명령을 추가 할 수 있습니다.

{ "keys": ["your_shortcut"], "command": "trim_trailing_white_space" }

나에게 가장 좋은 해결책은 단순히 이것을하기위한 플러그인을 추가하고 싶지 않다는 것입니다. 감사.
puro_nervio

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