숭고한 텍스트 3, 공백을 탭으로 변환


192

나는 이것에 관한 많은 게시물이 있다는 것을 알고 있지만 그것을 작동시키지 못했습니다.
코딩에 탭을 사용합니다. 항상 공백을 탭으로 변환하는 방법이 있습니까? 즉 파일 열기 및 저장? 누구나 아이디어가 있습니까?

// 편집 :
이 작업을 자동으로 수행하고 싶습니다 ! -> 열거 나 저장하거나 즉석
에서 누구든지 어떻게해야하는지 알고 있습니까?


나는 노력 :

import sublime, sublime_plugin, os

class ExpandTabsOnSave(sublime_plugin.EventListener):
  # Run ST's 'expand_tabs' command when saving a file
  def on_pre_save(self, view):
    if view.settings().get('expand_tabs_on_save') == 1:
      view.window().run_command('expand_tabs')

그리고 내 사용자 설정은 다음과 같습니다.

{
    "auto_complete_selector": "source - comment, meta.tag - punctuation.definition.tag.begin",
    "auto_indent": true,
    "detect_indentation": true,
    "draw_white_space": "all",
    "ensure_newline_at_eof_on_save": true,
    "expand_tabs_on_save": true,
    "font_face": "SourceCodePro-Regular",
    "font_size": 10,
    "format_on_save": true,
    "ignored_packages":
    [
        "Vintage"
    ],
    "indent_to_bracket": true,
    "open_files_in_new_window": false,
    "smart_indent": true,
    "tab_size": 4,
    "translate_tabs_to_spaces": false,
    "trim_automatic_white_space": true,
    "trim_trailing_white_space_on_save": true,
    "use_tab_stops": false,
    "word_wrap": false
}

게시 한 플러그인은 실제로 ST3, 빌드 3059에서 제대로 작동합니다. 콘솔을 열어서 Ctrl + ~플러그인 오류가 발생하는지 확인할 수 있습니까? 패키지 컨트롤이 설치되어 있으면 ExpandTabsOnSave설치된 플러그인으로 표시되어 있는지 확인할 수 있습니까?
angerson

미친 것, 설치되어있는 것 같습니다 (목록 패키지 아래에 나열되어 있음) 콘솔에서 오류를 찾을 수 없습니다 :-(
chris

print("debug")플러그인이 실행 중인지 또는 저장되지 않는지 확인하려면 플러그인을 추가 하거나 유사하게 시도 하십시오.
angerson

세상에! Windows 컴퓨터에서 잘못된 디렉토리였으며 패키지는 user /.../ AppData / Roaming / SublimeText3 / Packages에 나열되어 있습니다. 대단히 감사합니다!
chris

명령을 실행하기 전에 해당보기를 창의 활성보기로 설정하십시오. 가능성이 높지 않지만 게시했을 때 저장하려는 페이지와 다른 페이지의 탭을 확장 할 수 있습니다. 포커스보기에서도 잘못된 파일에 저장할 가능성이 있지만 최소한 위험을 최소화 할 수 있다고 생각합니다.
skuroda

답변:


377

Sublime Text 창의 오른쪽 하단에 다음과 같은 들여 쓰기 표시기가 나타납니다.

들여 쓰기 옵션 메뉴

이 버튼을 클릭하면 들여 쓰기 환경 설정을 조정하는 옵션이있는 메뉴가 열리고 더 중요한 것은 Convert Indentation to Tabs/Spaces입니다.

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

같은 메뉴가 아래에 나열됩니다 View -> Indentation.


42
예, 알아요 내 소망은 이것을 자동으로 만드는 것입니다 ... 어떤 생각?
chris

2
@chris ツ 아. 더 명확하게 보이도록 질문을 다시 작성할 수 있습니까? 나는 당신의 의미를 놓쳤으므로 다른 사람들도 마찬가지입니다.
angerson

하단에 상태 표시 줄이 없습니다. 어떻게받을 수 있습니까?
geoidesic

1
그리고 이것은 전체 파일에서 수행되며 선택에서만 수행 할 수 없습니다 .
not2qubit

아주 좋아요 또한 'command-a'를 사용하여 모두 선택하고 'command- ['를 들여 쓰지 않은 다음 'edit> line> reindent'를 선택하여 파일을 수정했습니다. 나는 이것이 매크로에 내장 될 수 있다고 확신합니다.
Brooks DuBois

130

Sublime 창 하단에 탭 / 공간 설정을 나타내는 것이 표시됩니다.

그런 다음 다양한 옵션이 포함 된 드롭 다운이 표시됩니다. 관심있는 옵션은 다음과 같습니다.

  • 들여 쓰기를 공백으로 변환
  • 들여 쓰기를 탭으로 변환

원하는 설정을 전체 문서에 적용하십시오.

도움이 되었기를 바랍니다.


2
내가로드하는 모든 파일에 대해로드시 자동으로 수행되기를 바랍니다. 내 말은 들여 쓰기 공간을 탭으로 변환하는 것입니다. 로드시 자동 실행 :-)
Filip OvertoneSinger Rydlo 2016 년

1
그 말 들었어 나는 탭을 선호하지만 많은 코드가 공백으로 작성된 이유를 이해합니다. 공백이 있으면 IDE간에 불일치가 없습니다. 공백은 공백입니다. 탭은 IDE 사이에서 가변 수의 공백을 차지하고 코드를 이상하게 보일 수 있습니다.
erier

안녕하세요 @Green-어떻게 작동하지 않습니까? 이 문제를 해결합시다 ...
erier

80

이미 알고 있듯이 다음과 같이 indention 설정을 사용자 지정할 수 있습니다 Preferences.sublime-settings.

"detect_indentation": true,
"tab_size": 4,
"translate_tabs_to_spaces": false

이렇게하면 편집기가 4 칸 너비의 탭을 사용하도록 설정하고 Sublime이 편집중인 파일의 들여 쓰기와 일치하는 기본 동작을 무시합니다. 이 설정을 사용하면 파일을 다시 들여 쓰기하면 공백이 탭으로 바뀝니다.

파일을 열 때 자동으로 다시 들여 쓰기하는 것만 큼 쉽지는 않습니다 (그러나 공백 변경으로 인해 파일 차이가 심해지기 때문에 좋은 생각이 아닙니다). 더 나은 행동 방법 : 재 입력에 대한 바로 가기를 매핑하고 수정이 필요한 새 파일을 열 때 트리거 할 수 있습니다.


13

명령 팔레트를 사용하여이 문제를 해결할 수 있습니다.

1 단계 : Ctrl + Shift + P(명령 팔레트를 활성화하려면)

2 단계 : "들여 쓰기"를 입력하고 선택 "Indentation: Convert to Tabs"


1
우수한. 감사합니다.
RJ

최고의 솔루션. 감사!
Matthew K

7

필자의 경우이 줄은 문제를 해결했습니다.

"translate_tabs_to_spaces": false

4

다음은 파일을 열 때마다 자동으로 탭으로 변환되는 솔루션입니다.

이 파일을 작성하십시오. .../Packages/User/on_file_load.py:

import sublime
import sublime_plugin

class OnFileLoadEventListener(sublime_plugin.EventListener):

    def on_load_async(self, view):
        view.run_command("unexpand_tabs")

노트. 실제 공간-탭 변환이 수행되지 않은 경우에도 파일을 연 후 파일이 저장되지 않은 상태가됩니다.


나는 당신이 의미 생각 .../Packages/User/on_file_load.py하지,.php
PRANAV Nutalapati

@PranavNutalapati 감사합니다.
TheStoryCoder

그래 문제 없어요.
Pranav Nutalapati

on_load대신 사용해보십시오 on_load_async.
Pedro Góes

3

save시 공백을 탭으로 자동 변환하려면 "$ SUBLIME_HOME $ \ Packages \"내의 "UnexpandTabsOnSave"라는 새로 생성 된 하위 폴더에 다음 Python 스크립트를 추가하십시오.

import sublime, sublime_plugin, os

class ConvertSpacesToTabsOnSave( sublime_plugin.EventListener ):
  # Run Sublime's 'unexpand_tabs' command when saving any file
  def on_pre_save( self, view ):
    view.window().run_command( 'unexpand_tabs' )

초기 리소스에 감사드립니다.


0

다음과 같은 방법으로 모든 프로젝트 파일에서 탭을 공백으로 바꿀 수 있습니다.

  1. 모두 교체하기 Ctrl+Shif+F
  2. 정규식 검색 설정 ^\A(.*)$
  3. 디렉토리를 Your dir
  4. 로 교체 \1

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

  5. 그러면 모든 프로젝트 파일이 열리고 버퍼가 더티로 표시됩니다. 이를 통해 이제 다음 숭고한 텍스트 설정을 선택적으로 활성화하여 공백으로 끝나는 모든 파일을 잘라 내고 모든 파일 끝에 새 줄을 만들 수 있습니다.

    메뉴에서 Preferences -> Settings다음 내용을 설정 파일에 추가 하여이 설정을 활성화 할 수 있습니다 .

    1. "ensure_newline_at_eof_on_save": true,
    2. "trim_trailing_white_space_on_save": true,
  6. 메뉴로 이동하여 Sublime Text 콘솔을 열고 다음 View -> Show Console (Ctrl+`)명령을 실행하십시오. import threading; threading.Thread( args=(set(),), target=lambda counterset: [ (view.run_command( "expand_tabs", {"set_translate_tabs": True} ), print( "Processing {:>5} view of {:>5}, view id {} {}".format( len( counterset ) + 1, len( window.views() ), view.id(), ( "Finished converting!" if len( counterset ) > len( window.views() ) - 2 else "" ) ) ), counterset.add( len( counterset ) ) ) for view in window.views() ] ).start()
  7. 이제 메뉴로 이동하여 변경된 모든 파일을 저장하십시오. File -> Save All

0

Mac을 사용하는 경우 도움말 옵션 (일반적으로 Mac 메뉴 표시 줄의 마지막 옵션)을 사용하고 "탭 들여 쓰기"를 입력하고 탭 들여 쓰기 너비를 선택하십시오.

그러나 일반적으로 다음 경로를 따를 수 있습니다. view-> indentation



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