Văn bản tuyệt vời 3, chuyển đổi không gian sang các tab


192

Tôi biết có rất nhiều bài viết về điều này, nhưng tôi không thể làm cho nó hoạt động được.
Tôi sử dụng các tab để mã hóa. Có cách nào, để luôn luôn chuyển đổi không gian sang các tab không? Tức là mở và lưu tập tin? Bất cứ ai cũng có một ý tưởng?

// chỉnh sửa:
Mong muốn của tôi là làm điều này tự động ! -> mở, lưu hoặc trên máy bay
Có ai biết làm thế nào không?


Tôi đã thử điều này :

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')

Và đây là Cài đặt người dùng của tôi:

{
    "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
}

Plugin bạn đã đăng thực sự hoạt động tốt với tôi trên ST3, bản dựng 3059. Bạn có thể mở giao diện điều khiển với Ctrl + ~và xem nó có cung cấp cho bạn bất kỳ lỗi plugin nào không? Và nếu bạn đã cài đặt Gói kiểm soát, bạn có thể xem liệu ExpandTabsOnSavecó được liệt kê dưới dạng plugin đã cài đặt không?
góc

crazy one, dường như đã được cài đặt (được liệt kê trong các gói danh sách) và trong bảng điều khiển, tôi có thể tìm thấy bất kỳ lỗi nào :-(
chris

Hãy thử thêm print("debug")hoặc tương tự với plugin để xem nó có thực thi hay không khi lưu.
cá nhân

ồ, công việc của nó! là thư mục sai trên máy windows, các gói được liệt kê trong user /.../ AppData / Roaming / SublimeText3 / Gói Cảm ơn rất nhiều!
chris

Hãy chắc chắn rằng bạn đặt chế độ xem đó là chế độ xem hoạt động cho cửa sổ trước khi chạy lệnh. Có thể không có khả năng lắm, nhưng khi bạn đăng nó, có thể nó sẽ mở rộng các tab của một trang khác với trang bạn đang cố lưu. Ngay cả với chế độ xem tập trung, tôi cho rằng có khả năng nó có thể lưu vào một tệp sai, nhưng ít nhất bạn có thể giảm thiểu rủi ro.
skuroda

Câu trả lời:


376

Ở góc dưới bên phải của cửa sổ Văn bản cao siêu của bạn, bạn sẽ thấy một chỉ báo thụt lề trông rất giống như thế này:

Menu tùy chọn thụt lề

Nhấp vào nó sẽ mở ra một menu với các tùy chọn để điều chỉnh tùy chọn thụt lề của bạn, và quan trọng hơn , Convert Indentation to Tabs/Spaces.

nhập mô tả hình ảnh ở đây

Các menu tương tự được liệt kê dưới đây View -> Indentation.


42
Vâng tôi biết. Mong muốn của tôi là làm cho điều này tự động ... bất kỳ ý tưởng?
chris

2
@chris ツ À. Bạn có thể định dạng lại câu hỏi của bạn để làm cho rõ ràng hơn? Tôi đã bỏ lỡ ý nghĩa của bạn, vì vậy những người khác cũng có thể.
cá nhân

Tôi không có thanh trạng thái ở phía dưới - làm cách nào để có được nó?
địa lý

1
Và điều này không có trên toàn bộ tập tin và không thể chỉ được thực hiện trên một lựa chọn.
not2qubit

Rất đẹp. Tôi cũng đã thực hiện 'lệnh-a' để chọn tất cả, 'lệnh- [' để không thụt lề, sau đó 'chỉnh sửa> dòng> reindent' để sửa tệp. Tôi chắc chắn rằng điều này có thể được xây dựng thành một macro.
Brooks DuBois

130

Ở dưới cùng của cửa sổ Sublime, bạn sẽ thấy một cái gì đó đại diện cho cài đặt tab / không gian của bạn.

Sau đó, bạn sẽ nhận được một thả xuống với một loạt các tùy chọn. Các tùy chọn bạn quan tâm là:

  • Chuyển đổi thụt lề sang không gian
  • Chuyển đổi thụt lề sang Tab

Áp dụng cài đặt mong muốn của bạn cho toàn bộ tài liệu.

Hi vọng điêu nay co ich.


2
Tôi ước điều này có thể được thực hiện khi tải và tự động ... cho tất cả các tệp mà tôi mở. Ý tôi là: việc chuyển đổi không gian thụt vào các tab. Nó sẽ được chạy tự động khi tải :-)
Filip OvertoneSinger Rydlo

1
Tôi nghe bạn nói về điều đó. Tôi thích các tab NHƯNG Tôi hiểu tại sao nhiều mã được viết bằng dấu cách. Với các không gian, sẽ không có sự mâu thuẫn giữa các IDE - một không gian là một không gian là một không gian. Các tab có thể chiếm số lượng không gian khác nhau giữa các IDE và làm cho mã trông lạ.
erier

Xin chào @Green - những gì không hoạt động về nó? Chúng ta hãy giải quyết việc này ...
erier

80

Như bạn có thể đã biết, bạn có thể tùy chỉnh cài đặt chỉ định của mình trong Preferences.sublime-settings, ví dụ:

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

Điều này sẽ đặt trình chỉnh sửa của bạn sử dụng các tab rộng 4 khoảng trắng và sẽ ghi đè hành vi mặc định khiến Sublime khớp với sự chú ý của bất kỳ tệp nào bạn đang chỉnh sửa. Với các cài đặt này, việc thụt lại tệp sẽ khiến bất kỳ khoảng trắng nào được thay thế bằng các tab.

Theo như tự động thụt lề lại khi mở tệp, điều đó không hoàn toàn dễ dàng (nhưng có lẽ không phải là một ý tưởng tuyệt vời vì khoảng cách thay đổi sẽ phá hủy sự khác biệt của tệp). Điều gì có thể là một hành động tốt hơn: bạn có thể ánh xạ một lối tắt để tái sử dụng và chỉ kích hoạt khi bạn mở một tệp mới cần sửa.


13

Bạn có thể sử dụng bảng lệnh để giải quyết vấn đề này.

Bước 1: Ctrl + Shift + P (để kích hoạt bảng lệnh)

Bước 2: Nhập "thụt lề", chọn "Indentation: Convert to Tabs"


1
Thông minh. Cảm ơn bạn.
RJ

Giải pháp tốt nhất. Cảm ơn!
Matthew K

7

Trong trường hợp của tôi, dòng này đã giải quyết vấn đề:

"translate_tabs_to_spaces": false

4

Đây là một giải pháp sẽ tự động chuyển đổi thành các tab bất cứ khi nào bạn mở một tập tin.

Tạo tập tin này .../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")

GHI CHÚ. Nó khiến tập tin ở trạng thái chưa được lưu sau khi mở nó, ngay cả khi không có chuyển đổi không gian thực tế nào xảy ra ... có thể một số có thể giúp khắc phục điều đó ...


Tôi nghĩ bạn có ý đó .../Packages/User/on_file_load.py, không phải.php
Pranav Nutalapati

@PranavNutalapati Cảm ơn bạn đã nắm bắt được điều đó.
TheStoryCoder

Ừ chắc chắn. Không vấn đề gì.
Pranav Nutalapati

thử on_loadthay vì on_load_async.
Pedro Góes

3

Để tự động chuyển đổi khoảng trắng thành các tab khi lưu , hãy thêm tập lệnh Python sau vào thư mục con mới được tạo có tên là "UnExandTabsOnSave" trong "$ SUBLIME_HOME $ \ Gói \":

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' )

Cảm ơn bạn cho tài nguyên ban đầu.


0

Bạn có thể thay thế các tab bằng khoảng trắng trong tất cả các tệp dự án bằng cách:

  1. Thực hiện Thay thế tất cả Ctrl+Shif+F
  2. Đặt tìm kiếm regex ^\A(.*)$
  3. Đặt thư mục thành Your dir
  4. Thay thế bởi \1

    nhập mô tả hình ảnh ở đây

  5. Điều này sẽ khiến tất cả các tệp dự án được mở, với bộ đệm của chúng được đánh dấu là bẩn. Với điều này, giờ đây bạn có thể tùy chọn kích hoạt các cài đặt Văn bản tuyệt vời tiếp theo này, để cắt tất cả các tệp theo sau khoảng trắng và đảm bảo một dòng mới ở cuối mỗi tệp.

    Bạn có thể bật các cài đặt này bằng cách vào menu Preferences -> Settingsvà thêm các nội dung này vào tệp cài đặt của mình:

    1. "ensure_newline_at_eof_on_save": true,
    2. "trim_trailing_white_space_on_save": true,
  6. Mở bảng điều khiển Sublime Text, bằng cách vào menu View -> Show Console (Ctrl+`) và chạy lệnh: 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. Bây giờ, lưu tất cả các tệp đã thay đổi bằng cách vào menu File -> Save All

0

nếu bạn có Mac, chỉ cần sử dụng tùy chọn trợ giúp (thường là tùy chọn cuối cùng trên thanh menu của Mac), sau đó nhập: "thụt tab" và chọn chiều rộng thụt tab

nhưng nói chung, bạn có thể đi theo con đường này: view -> thụt lề



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.