Trabalhando com Python no Emacs, se eu quiser adicionar uma tentativa / exceto a um bloco de código, geralmente acho que estou tendo que recuar todo o bloco, linha por linha. No Emacs, como você recua todo o bloco de uma só vez.
Não sou um usuário experiente do Emacs, mas acho que é a melhor ferramenta para trabalhar com o ssh. Estou usando o Emacs na linha de comando (Ubuntu), não como uma GUI, se isso faz alguma diferença.
C-c >
por certo.C-c <
para a esquerdaRespostas:
Se você estiver programando Python usando o Emacs, provavelmente deverá usar o modo python. Com o modo python, depois de marcar o bloco de código,
C-c >
ouC-c C-l
desloca a região 4 espaços para a direitaC-c <
ouC-c C-r
desloca a região 4 espaços para a esquerdaSe você precisar alterar o código em dois níveis de indentação ou em alguma quantia arbitrária, poderá prefixar o comando com um argumento:
C-u 8 C-c >
desloca a região 8 espaços para a direitaC-u 8 C-c <
desloca a região 8 espaços para a esquerdaOutra alternativa é usar o
M-x indent-rigidly
que está vinculado aC-x TAB
:C-u 8 C-x TAB
desloca a região 8 espaços para a direitaC-u -8 C-x TAB
desloca a região 8 espaços para a esquerdaTambém são úteis os comandos de retângulo que operam em retângulos de texto em vez de linhas de texto.
Por exemplo, depois de marcar uma região retangular,
C-x r o
insere espaço em branco para preencher a região retangular (deslocando efetivamente o código para a direita)C-x r k
mata a região retangular (deslocando efetivamente o código para a esquerda)C-x r t
solicita uma sequência para substituir o retângulo. EntrarC-u 8 <space>
entrará em 8 espaços.PS. Com o Ubuntu, para tornar o modo python o modo padrão para todos os arquivos .py, basta instalar o
python-mode
pacote.fonte
C-c >
é definido em python-mode.el, então acho que você deve ter instalado opython-mode
pacote em algum lugar ao longo do caminho. Que bom que funciona para você.C-c C-l
eC-c C-r
deve ser uma ligação personalizada que você mesmo configurou. Se você executaremacs -q
(para executar o emacs sem carregar um arquivo init), verá que não há ligação paraC-c C-l
ouC-c C-r
no modo Python.Além de
indent-region
, que é mapeadoC-M-\
por padrão, os comandos de edição de retângulo são muito úteis para Python. Marque uma região como normal e, em seguida:C-x r t
(string-rectangle
): solicita os caracteres que você deseja inserir em cada linha; ótimo para inserir um certo número de espaçosC-x r k
(kill-rectangle
): remova uma região retangular; ótimo para remover recuoVocê também pode
C-x r y
(yank-rectangle
), mas isso raramente é útil.fonte
indent-region
mapeado paraC-M-\
deve fazer o truque.fonte
Eu tenho usado essa função para lidar com meu recuo e recuo:
E então atribuí-lo a um atalho de teclado:
fonte
Eu sou um novato do Emacs, então essa resposta provavelmente está próxima de inútil.
Nenhuma das respostas mencionadas até agora abrange a re-indentação de literais como
dict
oulist
. Por exemplo,M-x indent-region
ouM-x python-indent-shift-right
e empresa não ajudarão se você recortou e colou o seguinte literal e precisa que ele seja recuado de forma sensata:Parece que
M-x indent-region
devemos fazer algo sensatamentepython-mode
, mas esse ainda não é o caso.No caso específico em que seus literais estão entre colchetes, o uso de TAB nas linhas em questão obtém o que você deseja (porque o espaço em branco não desempenha um papel).
Então, o que eu venho fazendo, nesses casos, está rapidamente a gravação de uma macro de teclado como
<f3> C-n TAB <f4>
como na F3, Ctrl-n (ou seta para baixo), TAB, F4 e, em seguida, usando F4 várias vezes para aplicar a macro pode salvar um par de teclas. Ou você pode fazerC-u 10 C-x e
para aplicá-lo 10 vezes.(Eu sei que não parece muito, mas tente reentrar 100 linhas de literal de lixo sem perder a seta para baixo e depois precisar subir 5 linhas e repetir as coisas;)).
fonte
Eu uso o seguinte trecho. Na guia quando a seleção está inativa, recua a linha atual (como normalmente faz); quando a seleção está inativa, recua toda a região para a direita.
fonte
Faça o recuo interativamente.
Copiado da minha postagem em: Recuar várias linhas no Emacs
fonte
Eu faço algo assim universalmente
fonte