Mam region kodu Pythona wybrany w emacsie. Jakie są najbardziej skuteczne sposoby wcięcia i cofnięcia wcięcia każdej linii w nim o 4 spacje?
Idealnie chciałbym coś, co nie jest zależne od kontekstu (np. Pozwoli mi na wcięcie fragmentów w dokumentach, gdzie wcięcie nie odnosi się do składni Pythona).
Linia mojego trybu pokazuje (Python)
. Przeszukując Internet, znalazłem wiele dyskusji na temat używania python-mode
zamiast python
, ale zacząłem używać emacsa dopiero kilka dni temu, więc obawiam się zmieniać domyślne ustawienia, zanim będę miał okazję je zrozumieć. Jeśli zmiana na python-mode
jest najlepszą opcją, chętnie przyjmuję to jako odpowiedź.
Co próbowałem (z instrukcji):
<TAB>
bez efektuC-M-\
bez efektuC-x <TAB>
(wcięcie sztywno) wcięcie każdej linii o jedną kolumnę (i odznaczenie regionu)M-i
wcina jeden pierwszy wiersz tabulatorem (długość 8 spacji)C-M-q
- „CMq jest niezdefiniowany”
Jedyny sposób, jaki znalazłem, to użycie wyrażenia regularnego, ale to straszna liczba naciśnięć klawiszy dla tak prostego zadania.
źródło
python-indent-shift-left
.indent-rigidly
pobiera argument przedrostka wskazujący, o ile wcięcia, więcC-u 42 C-x TAB
wcięcia o 42 kolumny, a ponieważ domyślny argument przedrostka to 4,C-u C-x TAB
wcięcia o 4 kolumny.Jeśli chcesz ponownie wybrać region, zrób to
C-x C-x
później.źródło
Użyj polecenia wcięcie sztywno z przedrostkiem numerycznym.
C-u 4 M-x indent-rigidly
wcięcie regionu o cztery spacje,C-u -4 M-x indent-rigidly
usunięcie czterech spacji.źródło
Cx Cx zaznacz kod, a następnie Mx wcięcie dla trybu tabulatorów
To jest oszczędność, jeśli nacisnąłeś tab dla każdej linii.
źródło
Możesz także użyć trybu kolumnowego.
Wybierz linie w trybie kolumnowym, a następnie dodaj do nich wszystkie cztery spacje jednocześnie:
C-<space>
ustawić znakC-x r t
aby wejść w tryb kolumnowy (lubC-<RET>
jeśli masz tryb CUA)<space><space><space><space><RET>
Możesz wykonać podobny manewr, aby usunąć cztery spacje - po prostu dołącz 4 kolumny w zaznaczonym regionie (kroki 2-3) i naciśnij
<DEL>
źródło
Aktualizując powyższe rozwiązanie Chena, obecnie (testowane na Emacsie 24.4.1) zmieniono nazwę poleceń. Zakładając, że chcesz wciąć zgodnie ze zmienną python-indent, komendy to python-indent-shift-left i python-indent-shift-right. Możesz:
wystaw je, wpisując
M-x python-indent-shift-right
lubM-x python-indent-shift-left
użyj domyślnych skrótów trybu python
C-c >
iC-c <
powiąż je. Np. Na klawiaturze z przyciskiem Windows używam:
źródło
Kompilacja jest królem Emacsa, wystarczy połączyć
M-i
z https://github.com/magnars/multiple-cursors.el i masz polecenie blokowania wcięć. To znaczy:M->
N razy (gdzie N jest liczbą linii w bloku)M-i
źródło
Oba
S-<LEFT>
iS-<RIGHT>
działają dobrze wPython
trybie głównym. Jest to szczególnie wygodne w trybie Cua, gdzieC-c
iC-x
zachowanie zmienia się, aby kopiować / wycinać po wybraniu regionu.źródło