Jak zmusić wysublimowany tekst do wcięcia dwóch spacji na tabulator?

504

Czy istnieje sposób zmuszenia Sublime Text 2 do wcięcia zawsze dwóch spacji na tabulator podczas pracy z plikami Ruby?

Wiem, że wcięcie można ustawić w view -> indentationopcji menu, ale nie przykleja się. Za każdym razem, gdy otwieram nowy plik i wciskam kartę, następuje powrót do czterech spacji.

Mohamad
źródło
Sublime jest domyślnie nieco inny / dziwny. Chociaż może zapisać plik z wieloma spacjami, edytor sam usuwa obie spacje, jeśli zidentyfikuje go jako wcięcie.
Lime

Odpowiedzi:

899

Jeśli chcesz to dla wszystkich plików, przejdź do Preferences -> Settings - Default/User. Ale jak wskazuje kilka komentarzy poniżej, ustawienia specyficzne dla składni mogą ograniczyć go tylko do wybranych języków.

Aby ograniczyć tę konfigurację do plików Ruby, najpierw otwórz plik Ruby w edytorze, a następnie przejdź do Preferences -> Settings - Syntax Specific. To powinno otworzyć okno ustawień o nazwieRuby.sublime-settings

Zapisz te ustawienia:

{
  "tab_size": 2,
  "translate_tabs_to_spaces": true,
  "detect_indentation": false
}

Powtórz dla wszystkich innych typów składni, otwierając plik tego typu i wracając do preferencji, aby otworzyć poprawny plik preferencji dla tej składni.

Zedytowałem to, aby uwzględnić w komentarzach wiersz „detekcja_indentacji”; Wcześniej użyłem opcji Domyślny / Użytkownik do ustawienia rozmiaru mojej karty i nie potrzebowałem wykrywania karty, ale czy to z powodu globalnej konfiguracji, czy z powodu tego, że rzadko otwieram pliki z kartami, nie wiem.

Ponowne uruchomienie nie powinno być konieczne, chociaż w niektórych przypadkach może być.

DGM
źródło
11
Od kompilacji 2181. Możesz skonfigurować ustawienia w Preferencje -> Ustawienia - Domyślne / Użytkownik. Najlepiej umieścić go w ustawieniach użytkownika, ponieważ jest to zamierzone podejście.
Kevin Jalbert
20
@KevinJalbert (i DGM) Właściwie powinien umieścić to w ustawieniach specyficznych dla składni, aby miało to wpływ tylko na pliki Ruby.
Paul Hoffer
6
Zauważ, że wartość jest prawdziwa, a nie „prawda”.
earthmeLon
1
Jest to szczególnie przydatne, ponieważ własna dokumentacja witryny Sublime Text nieprawidłowo sugeruje użycie camelCase zamiast podkreślenia w klawiszach ustawień ... wciąż. ( sublimetext.com/docs/indentation )
Eric Goldberg
@EricGoldberg - Nie jestem pewien, jak dostałeś się na tę stronę dokumentacji, ale jeśli wejdziesz na sublimetext.com > Wsparcie, aw obszarze Dokumentacja kliknij link Sublime Text 2, zostaniesz przeniesiony do sublimetext.com/docs/2 - stamtąd można znaleźć dokumenty dotyczące wcięcia, a klawisze ustawień poprawnie używają podkreślenia: sublimetext.com/docs/2/indentation.html
jbyrd
166

Jeśli chcesz wymusić wybrane ustawienie karty, ignorując to, co prawdopodobnie już dzieje się w pliku, powinieneś uwzględnić detect_indentationw swojej konfiguracji (ustawienia użytkownika lub ustawienia specyficzne dla składni, w zależności od tego, czy chcesz mieć charakter globalny, czy typ pliku):

{
    "tab_size": 2,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false
}
James Chevalier
źródło
Dzięki za wskazówkę! Bez detect_indentationwyłączenia zachowywałem się bardzo dziwnie (niepoprawnie wykrywałem wcięcie i używałem go zamiast tego, co określiłem w moich ustawieniach).
JacobEvelyn
Robienie tego w ustawieniach domyślnych działało dla mnie. Sprawdź, czy ustawienie już istnieje. Jeśli dodasz go i zostanie on później zadeklarowany jako prawdziwy, pozostanie ustawiony jako prawda.
David
3
Pamiętaj, że zmiany w ustawieniach domyślnych zostaną zastąpione aktualizacjami Sublime Text itp. Zmiany w ustawieniach użytkownika nie zostaną zastąpione.
James Chevalier
6
DZIĘKUJĘ CI!! "detect_indentation":falsema kluczowe znaczenie , w przeciwnym razie inne ustawienia zostaną zignorowane. Wreszcie!
zzzeek
To dobra uwaga, ale twój przykład jest niewłaściwie wcięty ;-)
snow6oy
88

Możesz to również zrobić za pomocą łącza tekstowego na dolnym pasku Sublime Text 2 (po prawej stronie) z domyślnym napisem „Tab Tab 4”, kliknij to, a pojawi się okno z opcjami ustawiania rozmiaru tabulatora z 1 miejsca aż do 8 spacji i zawiera opcje konwersji tabulatorów na spacje i spacje na tabulatory.

Wygląda tak:

Opcje tabulatorów w wysublimowanym tekście 2

Taskism
źródło
3
Świetna wskazówka, ale czy wiesz, czy to będzie lepkie ustawienie? Na przykład zmiana wcięcia z górnego paska menu dotyczy tylko bieżącego otwartego pliku, a nie innych, co było moim pierwotnym problemem.
Mohamad,
5
To nie działa . To dobra wskazówka, ale nie jest lepka: zamknięcie i ponowne otwarcie pliku (lub otwarcie innego pliku) powoduje cofnięcie wcięcia do czterech spacji.
Mohamad,
1
Tak, nie jest lepki, jest na plik. Musisz przejść do ustawień Sublime Text, aby skonfigurować domyślne ustawienie tabulatorów / spacji.
Taskizm
To rozwiązało mój problem w Sublime Text 3. Dziękujemy!
Adrian
29

Czy mogę zasugerować EditorConfig ? Istnieje rozszerzenie do automatycznego ładowania i zastosowania .editorconfigpliku. Następnie po prostu utwórz go w katalogu głównym swojego projektu.

.editorconfig

[*.rb]
indent_style = tab
indent_size = 2

W ten sposób twoje ustawienia są specyficzne dla projektu i dla pliku, jeśli używasz różnych stylów dla każdego projektu lub języka.


Oto .editorconfigjak wygląda mój własny .

# editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
Nate
źródło
2
Nie chciałem, aby była to globalna zmiana. To było jedyne działające rozwiązanie. Przeprowadziłem badania nad EditorConfig i wygląda to bardzo ładnie dla IDE, które go obsługują.
Neil Monroe,
1
Tak się złożyło, że miałem już .editorconfig w moim projekcie i nawet o tym nie wiedziałem. (
angular
9

Używam pakietu Stupid Indent .

Install Package -> Stupid Indent

Preferences-> Package Settings-> Stupid Indent->Setting-Users

Skopiuj ustawienia ( Rubyczęści) do.

{
    "configuration":
    [
        {
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        }
    ]
}
Rahn
źródło
tak, to jest to, czego potrzebuję: D
Dragutescu Alexandru
Niesamowite.
Wielkie
OSTRZEŻENIE . Głupie wcięcia Domyślne i niestandardowe ustawienia wymuszają nadpisywanie ustawień Podniosły tekst i EditorConfig . Dzięki.
Саша Черных
1

Postępowałem zgodnie z poprzednimi odpowiedziami, w tym dodawałem linię wykrywanie_indentacji, a moje tabulatory wciąż miały pięć spacji. Potem zdałem sobie sprawę, że wybranie Preferences -> Settings -> More -> Syntax Specific -> Userz pliku ruby ​​otwiera się Ruby on Rails.sublime-settingsdla mnie, a nie Ruby.sublime-settings.

Nazwa mojego Ruby on Rails.sublime-settingspliku została zmieniona na Ruby.sublime-settings. Wreszcie działały dwie spacje! Po Ruby on Rails.sublime-settingsprostu wprowadziłem te same ustawienia , dla pewności.

Tim Koelkebeck
źródło