Supondo que a variável python-indent
seja 4:
M-x python-shift-right (C-c >)
M-x python-shift-left (C-c <)
Eu tenho uma região de código Python selecionada no emacs. Quais são as maneiras mais eficientes de recuar e desvincular cada linha por 4 espaços?
Idealmente, eu gostaria de algo que não seja sensível ao contexto (por exemplo, ele me permitirá recuar passagens dentro de docstrings onde o recuo não está relacionado à sintaxe do python).
Minha linha de modo mostra (Python)
. Pesquisando na web eu encontrei muita discussão sobre o uso de python-mode
em vez de python
, mas eu só comecei a usar emacs alguns dias atrás, então estou cauteloso em mudar os padrões antes de ter uma chance de entendê-los. Se mudar para python-mode
é a melhor opção, estou feliz em aceitar isso como resposta.
O que eu tentei (no manual):
<TAB>
sem efeito C-M-\
sem efeito C-x <TAB>
(indent-rigidly) recua cada linha por uma coluna (e desmarca a região) M-i
indenta uma primeira linha por uma tabulação (comprimento de 8 espaços) C-M-q
- "C-M-q é indefinido" A única maneira que encontrei é usar o regex-replace, mas esse é um número considerável de pressionamentos de teclas para uma tarefa tão simples.
indent-rigidly
usa um argumento de prefixo que indica quanto recuar, portanto, C-u 42 C-x TAB
indents por 42 colunas e, como o argumento de prefixo padrão é 4, C-u C-x TAB
indents por 4 colunas.
Se você quiser selecionar a região novamente, faça C-x C-x
depois.
Use o comando indent-rigidly com um prefixo numérico.
C-u 4 M-x indent-rigidly
para recuar a região por quatro espaços, C-u -4 M-x indent-rigidly
para remover quatro espaços.
C-x C-x marque o código e depois M-x recuo para modo de tabulação
Esse é o salvamento se você tiver pressionado a guia para cada linha.
Você também pode usar o modo de coluna.
Selecione as linhas no modo de coluna e adicione quatro espaços a todas de uma vez:
C-<space>
para definir a marca C-x r t
para entrar no modo de coluna (ou C-<RET>
se você tiver o modo CUA) <space><space><space><space><RET>
Você pode fazer uma manobra semelhante para excluir quatro espaços - basta incluir 4 colunas na região marcada (etapas de 2 a 3) e clicar em <DEL>
Atualizando a solução de Chen acima, atualmente (testado no Emacs 24.4.1) os comandos foram renomeados. Então, supondo que você queira recuar de acordo com a variável python-indent, os comandos são python-indent-shift-left e python-indent-shift-right. Você pode:
digite-os digitando M-x python-indent-shift-right
ou M-x python-indent-shift-left
use os atalhos padrão do modo em python C-c >
e C-c <
religue-os. Por exemplo, em um teclado com um botão do Windows, uso:
(global-set-key (kbd "s-s") 'python-indent-shift-left)
(global-set-key (kbd "s-d") 'python-indent-shift-right)
Composability é o rei do Emacs, apenas combine M-i
com link e você tem o comando indent block . Isso é você:
M->
N vezes (em que N é o número de linhas no bloco) M-i