Como forçar o texto sublime a recuar dois espaços por guia?

504

Existe uma maneira de forçar o Sublime Text 2 a sempre recuar dois espaços por guia ao trabalhar com arquivos Ruby?

Eu sei que o recuo pode ser definido na view -> indentationopção de menu, mas não fica. Sempre que abro um novo arquivo e clico em tab, ele volta para quatro espaços.

Mohamad
fonte
Sublime é um pouco diferente / estranho por padrão. Embora possa salvar o arquivo com vários espaços, o editor exclui os dois espaços se o identificar como recuo.
cal

Respostas:

899

Se você desejar para todos os arquivos, vá para Preferences -> Settings - Default/User. Porém, como vários comentários abaixo indicam, as configurações específicas de sintaxe podem limitar apenas os idiomas que você escolher.

Para limitar essa configuração aos arquivos Ruby, primeiro abra um arquivo Ruby no editor e, em seguida, vá para Preferences -> Settings - Syntax Specific. Isso deve abrir uma janela de configurações chamadaRuby.sublime-settings

Salve estas configurações:

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

Repita para qualquer outro tipo de sintaxe, abrindo um arquivo desse tipo e retornando às preferências para abrir o arquivo de preferências correto para essa sintaxe.

Eu editei isso para incluir a linha "detect_indentation" de acordo com as solicitações nos comentários; Anteriormente, usei o Default / User para definir o tamanho da minha guia e não precisei da detecção de guias, mas isso se deve à configuração global ou ao fato de raramente abrir arquivos com guias, não sei.

Reiniciar não deve ser necessário, embora em alguns casos possa ser.

DGM
fonte
11
Desde a compilação 2181. Você pode definir as configurações em Preferências -> Configurações - Padrão / Usuário. É melhor colocá-lo nas configurações do usuário, pois essa é a abordagem pretendida.
Kevin Jalbert
20
@KevinJalbert (e DGM) Na verdade, ele deve colocá-lo em configurações específicas de sintaxe, para afetar apenas os arquivos Ruby.
Paul Hoffer
6
Observe que o valor é verdadeiro e não "verdadeiro".
usar o seguinte código
1
Isso é especialmente útil, pois a documentação do site do Sublime Text sugere incorretamente o uso de camelCase em vez de sublinhados nas teclas de configuração ... ainda. ( sublimetext.com/docs/indentation )
Eric Goldberg
@EricGoldberg - Não tenho certeza de como você chegou a essa página de documentação, mas se você acessar sublimetext.com > Suporte e, em Documentação, clique no link Sublime Text 2, será direcionado para sublimetext.com/docs/2 - a partir daí, você pode encontrar os docs em recuo, e as teclas de ajuste usar corretamente sublinhado: sublimetext.com/docs/2/indentation.html
jbyrd
166

Se você deseja forçar a configuração da guia escolhida, ignorando o que provavelmente já está acontecendo no arquivo, inclua detect_indentationna sua configuração (as configurações do usuário ou as configurações específicas da sintaxe, dependendo se você deseja que seja global ou por tipo de arquivo):

{
    "tab_size": 2,
    "translate_tabs_to_spaces": true,
    "detect_indentation": false
}
James Chevalier
fonte
Obrigado pela dica! Sem detect_indentationdesligar, eu estava tendo um comportamento muito estranho (era detectar o recuo incorretamente e usá-lo em vez do que eu havia especificado nas minhas configurações).
27614 JacobEvelyn
Fazer isso nas configurações padrão funcionou para mim. Verifique se a configuração já existe. Se você adicioná-lo e declarado posteriormente como verdadeiro, ele permanecerá definido como verdadeiro.
David
3
Esteja ciente de que as alterações nas configurações padrão serão substituídas pelas atualizações de texto sublime, etc. As alterações nas configurações do usuário não serão substituídas.
James Chevalier
6
OBRIGADO!! "detect_indentation":falseé crítico, caso contrário as outras configurações são ignoradas. finalmente!
Zzzeek 5/05
É um ponto bom, mas o seu exemplo é inadequada recuado ;-)
snow6oy
88

Você também pode fazer isso com o link de texto na barra inferior do Texto sublime 2 (à direita) que diz "Tamanho da guia 4" por padrão, clique nele e uma janela aparece com opções para definir o tamanho da guia a partir de 1 espaço até 8 espaços e inclui opções para converter abas em espaços e espaços em abas.

Se parece com isso:

Opções da guia no texto sublime 2

Taskism
fonte
3
Ótima dica, mas você sabe se isso se torna um cenário complicado? Por exemplo, alterar o recuo da barra de menus superior se aplica apenas ao arquivo aberto atual, e não a outros, que era o meu problema original.
Mohamad 10/10
5
Isso não funciona . É uma boa dica, mas não é complicada: fechar e reabrir o arquivo (ou abrir outro arquivo) reverte o recuo em quatro espaços.
precisa
1
Sim, não é pegajoso, é por arquivo. Você precisa acessar as configurações de Sublime Text para definir sua configuração padrão para tabulações / espaços.
Taskism
Isso resolveu meu problema no texto sublime 3. Obrigado!
Adrian
29

Posso sugerir o EditorConfig ? Há uma extensão para carregar .editorconfigautomaticamente e aplicar o arquivo. Em seguida, basta criar um na raiz do seu projeto.

.editorconfig

[*.rb]
indent_style = tab
indent_size = 2

Dessa forma, suas configurações são específicas do projeto e do arquivo, se você usar estilos diferentes para cada projeto ou idioma.


Aqui está a minha .editorconfigaparência.

# 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
fonte
2
Eu não queria fazer disso uma mudança global. Portanto, essa foi a única solução que funcionou. Eu fiz algumas pesquisas no EditorConfig e parece muito bom para IDEs que o suportam.
Neil Monroe
1
Aconteceu que eu já tinha um .editorconfig no meu projeto e nem sabia disso. (-cli angular gera um)
uglycoyote
9

Eu uso o pacote Stent Indent .

Install Package -> Stupid Indent

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

Copie as configurações (de Rubyparte) para.

{
    "configuration":
    [
        {
            "patterns": ["*.rb"],
            "tab_size": 2,
            "translate_tabs_to_spaces": true
        }
    ]
}
Rahn
fonte
Sim, isto é o que eu preciso: D
Dragutescu Alexandru 30/10
Impressionante. Muito obrigado :)
krithikaGopalakrisnan
ATENÇÃO . As configurações padrão e personalizadas de recuo estúpido forçam a substituição das configurações Sublime Text e EditorConfig . Obrigado.
Саша Черных
1

Eu segui as respostas anteriores, incluindo a adição da linha detect_indentation, e minhas guias ainda tinham cinco espaços. Então percebi que a seleção Preferences -> Settings -> More -> Syntax Specific -> Userde um arquivo rubi estava se abrindo Ruby on Rails.sublime-settingspara mim, não Ruby.sublime-settings.

Renomeei meu Ruby on Rails.sublime-settingsarquivo para Ruby.sublime-settings. Finalmente guias com dois espaços funcionaram! Fui em frente e coloquei as mesmas configurações Ruby on Rails.sublime-settingstambém, só para ter certeza.

Tim Koelkebeck
fonte