Come correggere / convertire il rientro dello spazio in Sublime Text?


228

Esempio: se ho un documento con 2 rientri nello spazio e voglio che abbia 4 rientri nello spazio, come posso convertirlo automaticamente usando l'editor di testo sublime?

Risposte:


525

Ecco un trucco accurato in Sublime Text 2 o 3 per convertire la spaziatura del rientro in un documento.

TL; DR:

Conversione da 2 spazi a 4 spazi:

Assicurati che la larghezza della scheda sia impostata su 2. Converti il ​​rientro a 2 spazi in schede, passa alla larghezza della scheda 4, quindi converti il ​​rientro in spazi.

La descrizione dettagliata:

Vai a:

View -> Indentation

Dovrebbe leggere:

  • Indent using spaces [x]
  • Tab width: 2

Selezionare:

  • Convert Indentation to Tabs

Quindi selezionare:

  • Tab width: 4
  • Convert Indentation to Spaces

Fatto.


5
Grazie! : D Risparmiato un sacco di tempo. Nota. Puoi anche fare "trova: spazio-spazio => seleziona tutto => scheda"
Automatico,

11
Ho creato una macro per sublime che fa tutto questo per te gist.github.com/joshmfrankel/5707020 . Buon divertimento :-)
Josh Frankel,

2
Voglio sottolineare che "Converti rientro in spazi" funziona anche se hai un file di testo in cui le schede non occupano l'intera larghezza della scheda. Ad esempio, per un file in cui l'autore ha utilizzato le schede per formattare le colonne, quindi se si dovesse trovare e sostituire le schede, le colonne risultanti non sarebbero più allineate. L'uso di "Converti rientro in spazi" lo manterrà allineato correttamente però
Joe Pinsonault il

Ho anche creato macro e combinazioni di tasti di esempio per un collega prima di vedere la macro di Josh. Il mio utilizza ctrl + 2 e ctrl + 4 per consentire la commutazione avanti e indietro: gist.github.com/beaugunderson/8588871
Beau

74

In realtà ho scoperto che per la mia sanità mentale è meglio definire le preferenze dell'utente in questo modo:

"translate_tabs_to_spaces": true,
"tab_size": 2,
"indent_to_bracket": true,
"detect_indentation": false

Ciò detect_indentation: falseè particolarmente importante, poiché obbliga Sublime a rispettare queste impostazioni in ogni file, al contrario delle View -> Indentationimpostazioni.

Se vuoi essere sofisticato, puoi anche definire una scorciatoia da tastiera per reinserire automaticamente il tuo codice (YMMV) incollando quanto segue in Sublime -> Preferences -> Key Binding - User:

[
  { "keys": ["ctrl+i"], "command": "reindent" }
]

e per visualizzare gli spazi bianchi:

"indent_guide_options": ["draw_active"],
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,
"draw_white_space": "all",
"rulers": [120],

9

Ho trovato, nella mia mente, una soluzione più semplice di Magne:

Su Mac:

"cmd+f" => "  "(two spaces) => "alt+enter" => "arrow right" => "  "(two more spaces) => set tab width to 4(this can be done before or after.

Su Windows o altre piattaforme cambiamento cmd+fe alt+entercon qualunque sia il vostro finde select alltasti di scelta rapida sono.

Nota: questo metodo è soggetto a "errori" se hai più di uno spazio nel tuo codice. È quindi meno sicuro del metodo di Magne, ma è più veloce (almeno per me).


Non sono riuscito a farlo funzionare come tale, ma ho usato il principio e ho fatto solo una ricerca e sostituzione (cmd-opzione-F su Mac) e ho sostituito "" (4 spazi) con "" (2 spazi). E ha funzionato!
evanbikes,

Ho trovato un altro modo per farlo ora, ma è specifico della lingua. Se disponi di un plug-in di formattazione come quello RubyFormat, puoi semplicemente impostare la dimensione della scheda desiderata e quindi riformattare il codice. Nel caso RubyFormatsarebbe cmd+shift+R.
Automatico,

7

Mentre molti dei suggerimenti funzionano quando si converte 2 -> 4 spazi. Ho riscontrato alcuni problemi durante la conversione di 4 -> 2.

Ecco cosa ho finito per usare:

Sublime Text 3/Packages/User/to-2.sublime-macro

[
  { "args": null, "command": "select_all" },
  { "args": { "set_translate_tabs": true }, "command": "unexpand_tabs" },
  { "args": { "setting": "tab_size", "value": 1 }, "command": "set_setting" },
  { "args": { "set_translate_tabs": true }, "command": "expand_tabs" },
  { "args": { "setting": "tab_size", "value": 2 }, "command": "set_setting" }
]

5

Se trovi la ricerca e sostituisci più velocemente da usare, puoi usare una regex sostitutiva in questo modo:

Trova (regex): (^|\G) {2}(Invece di "{2}" <space>{2} puoi semplicemente scrivere due spazi. Usalo qui per chiarezza.)

Sostituisci con 4 spazi, o qualsiasi cosa tu voglia, come \t.


5

Ho scritto un plugin per questo. Puoi trovarlo qui o cercare "ReIndent" nel controllo dei pacchetti. Principalmente fa la stessa cosa di Kyle Finley, ma in modo conveniente con scorciatoie per la conversione tra 2 e 4 e viceversa.


2

Devi aggiungere questo codice ai tuoi tasti personalizzati:

{ "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} }

premendo ctrl + f12, il file verrà reindirizzato a una dimensione di scheda di 4. se si desidera una dimensione di scheda diversa, è sufficiente modificare il numero "valore". Il formato è un semplice json.


Mi piace grazie! Ho aggiunto 2 e 4 in questo modo:{ "keys": ["ctrl+f10"], "command": "set_setting", "args": {"setting": "translate_tabs_to_spaces", "value": 2} }, { "keys": ["ctrl+f11"], "command": "set_setting", "args": {"setting": "tab_size", "value": 2} }, { "keys": ["ctrl+f12"], "command": "set_setting", "args": {"setting": "tab_size", "value": 4} },
JREAM

0

La cosa più semplice che ho fatto è stata,

ha cambiato il mio rientro in Schede

e ha risolto il mio problema.

Puoi fare lo stesso,

agli spazi

oltre che per le tue necessità.

Menzionato l'istantanea della stessa.

inserisci qui la descrizione dell'immagine


Sì, ma la domanda pone la situazione quando entrambi inizi e finisci con il rientro come spazi.
Magne

0

Di recente ho riscontrato un problema simile. Stavo usando l'editor sublime. non è un problema con il codice ma con l'editor.

Di seguito la modifica delle impostazioni delle preferenze ha funzionato per me.

Menu Testo sublime -> Preferenze -> Impostazioni: specifico della sintassi :

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.