Não consegui fazer com que o Emacs alternasse de 8 guias de espaço para 4 guias de espaço ao pressionar os TABbuffers no modo principal text-mode
. Adicionei o seguinte ao meu .emacs
:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)
Não importa como eu mude meu .emacs
arquivo (ou as variáveis locais do meu buffer), o TABbotão sempre faz a mesma coisa.
- Se não houver texto acima, indente 8 espaços
- Se houver texto na linha anterior, recue no início da segunda palavra
Por mais que eu ame o Emacs, isso está ficando chato. Existe uma maneira de fazer o Emacs recuar pelo menos 4 espaços quando não houver texto na linha anterior?
emacs
indentation
Cristian
fonte
fonte
(setq-default tab-width 4)
NÃO é a mesma coisa(setq tab-width 4)
que você não perdeu o "padrão"!Respostas:
ou adicione a entrada tab-stop-list às variáveis de conjunto personalizadas no arquivo .emacs :
fonte
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120)))
? Bem, desde que funcione, eu acho ...: P'(tab-stop-list (quote (4)))
.quote
precisa de dois números para continuar a sequência ad infinitum. Veja: stackoverflow.com/a/42148697/2662028Resposta curta:
O ponto principal é dizer ao emacs para inserir o que você quiser ao recuar, isso é feito alterando a função da linha de recuo. É mais fácil alterá-lo para inserir uma guia e depois alterar as guias em 4 espaços do que alterá-lo para inserir 4 espaços. A seguinte configuração resolverá seu problema:
Explicação:
No manual do recuo controlado pelo modo principal @ emacs :
No manual recuo-relativo @ emacs:
Apenas altere o valor da função de recuo da linha para a função de inserção de guias e configure a inserção de guias como 4 espaços.
fonte
Atualização: Desde o Emacs 24.4:
o que significa que não é mais necessário configurar
tab-stop-list
da maneira mostrada abaixo, pois você pode mantê-lo definidonil
.A resposta original segue ...
Sempre me dói ver coisas como
(setq tab-stop-list 4 8 12 ................)
quando anumber-sequence
função está lá esperando para ser usada.ou
fonte
tab-stop-list
agora está implicitamente estendido ao infinito. Seu valor padrão é alterado para zero, o que significa que uma guia para todas astab-width
colunas". - portanto, você pode simplesmente usar o valor padrão denil
.Você pode achar mais fácil configurar suas guias da seguinte maneira:
No
Customize group:
prompt, digiteindent
.Você verá uma tela na qual poderá definir todas as opções de recuo e defini-las para a sessão atual ou salvá-las para todas as sessões futuras.
Se você fizer isso dessa maneira, desejará configurar um arquivo de personalização .
fonte
fonte
fonte
26.3
isso funciona para código C ++ e o comentário dentro também
fonte
Esse problema não é causado pela falta de paradas de tabulação; é que o emacs tem um método de guia (novo?) chamado recuo-relativo que parece projetado para alinhar dados tabulares. A tecla TAB é mapeada para o método indent-for-tab-command, que chama qualquer método para o qual a variável indent-line-function esteja definida, que é o método relativo ao recuo no modo de texto. Eu não descobri uma boa maneira de substituir a variável de função de linha de recuo (o gancho do modo de texto não está funcionando, então talvez ele seja redefinido após a execução dos ganchos do modo?), Mas uma maneira simples de se livrar disso O comportamento é apenas descartar o método de intenção de tabulação, definindo TAB para o método mais simples de tabulação de tabulação:
(definir chave-texto-modo-mapa (kbd "TAB") 'tab-to-tab-stop)
fonte
Tente o seguinte:
Isso fará com que o TAB sempre insira um caractere TAB literal com paradas de tabulação a cada 4 caracteres (mas apenas no modo Texto). Se não é isso que você está pedindo, descreva o comportamento que você gostaria de ver.
fonte
Você pode adicionar essas linhas de código ao seu arquivo .emacs. Ele adiciona um gancho para o modo de texto usar a guia de inserção em vez de relativa ao recuo.
Espero que ajude.
fonte
Apenas mudar o estilo com c-set-style foi o suficiente para mim.
fonte
Adicione isso ao seu arquivo .emacs:
Isso definirá a largura em que uma guia é exibida para 2 caracteres (altere o número 2 para o que você quiser)
Para garantir que o emacs esteja realmente usando guias em vez de espaços:
Além disso, o padrão para o emacs ao retroceder sobre uma guia é convertê-lo em espaços e, em seguida, excluir um espaço. Isso pode ser irritante. Se você quiser apenas excluir a guia, faça o seguinte:
Aproveitar!
fonte
Essa é a única solução que impede que uma guia seja inserida para mim, sem uma sequência ou conversão de guias em espaços. Ambos pareciam adequados, mas desperdiçadores:
Observe que
quote
precisa de dois números para funcionar (mas não mais!).Além disso, na maioria dos modos principais (
Python
por exemplo), o recuo é automático no Emacs. Se você precisar recuar fora do recuo automático, use:M-i
fonte
As personalizações podem ser sombreadas,
(setq tab width 4)
portanto, usesetq-default
ou informe ao Custom o que você está fazendo. Eu também tive problemas semelhantes ao OP e o consertei sozinho, não precisei ajustartab-stop-list
ou executar nenhumainsert
função:Achei útil adicionar isso imediatamente depois (uma dica do emacsWiki):
fonte
As melhores respostas não funcionaram até que eu escrevi isso no arquivo .emacs:
fonte
Você tentou
fonte
fonte
A propósito, no modo C , adiciono
(setq-default c-basic-offset 4)
ao .emacs. Veja http://www.emacswiki.org/emacs/IndentingC para obter detalhes.fonte
No meu arquivo init, diferente porque eu queria espaços em vez de guias:
fonte
Modificou esta resposta sem nenhum gancho:
fonte