Jak wyłączyć automatyczne wcięcie nowych linii?

37

Niedawno zaktualizowałem emacsa do wersji 24.4.1 i coś się zmieniło w wcięciach nowych linii. Kiedy uderzam enter, spodziewam się po prostu „pustej” nowej linii w miejscu, w którym kursor był obecny, w szczególności jeśli jestem na środku linii, linia ta powinna zostać podzielona i żaden znak nie może zostać usunięty, włączając spacje. Niestety tak nie jest.

Oto przykład:

a b

Po umieszczeniu kursora tuż po ai wciśnięciu enterotrzymuję:

a
b

podczas gdy powinno być

a
 b

Trochę googlowałem i prawdopodobnie wynika to z automatycznego wcięcia, jak mogę to wyłączyć? Mówię o trybie tekstowym lub podstawowym, jeśli to ma znaczenie.

WeSenseASoulInSearchOfAnswers
źródło
7
Dla potomnych mam komentarz, który mogę dodać do tego. Wiele problemów z „ostatnią aktualizacją” można rozwiązać, czytając AKTUALNOŚCI za pomocą M-x view-emacs-news(lub C-h n). Możesz przeczytać AKTUALNOŚCI dla dowolnej poprzedniej wersji, dodając przedrostek arg. Po przejrzeniu AKTUALNOŚCI i przeprowadzeniu wyszukiwania „wcięcia” pierwszy wynik jest bardzo podobny do odpowiedzi Drew. Tylko przydatna wskazówka dotycząca wszelkich problemów związanych z aktualizacjami.
niania

Odpowiedzi:

49

Wyłącz electric-indent-mode:

(when (fboundp 'electric-indent-mode) (electric-indent-mode -1))

Działa z każdą wersją Emacsa. Ta irytacja lub błyszcząca nowa funkcja, w zależności od twojego punktu widzenia, została wprowadzona jako domyślna w Emacsie 24.4.

Zobacz także ten podobny post na StackOverflow.

(Wydaje się jednak, że mówisz na odwrót i chcesz RET wcięcia, ale nie otrzymujesz tego wcięcia. Zmieniło się to, że RET(„Enter”) teraz wcina się automatycznie i musisz nacisnąć, C-jaby uzyskać nowy wiersz z bez wcięć. Zostały zamienione RETi C-j, w efekcie. Jeśli chcesz RETwcięcia, nowe domyślne zachowanie powinno dać ci to, czego chcesz. W każdym razie tryb to electric-indent-mode: włącz lub wyłącz, jak chcesz.)

Drew
źródło
1

Istnieje możliwość wstawienia nowej linii z char C-q C-ji tam są 3 komendy, aby podzielić linię: open-line C-o, split-line C-M-oa newline RET, C-mużyte. Jeśli umieścisz kursor, jak powiedziałeś po, ai naciśniesz, C-obieżąca linia zostanie przerwana po kursorze, a każdy znak będzie w następnej linii. linia podziału zachowa pozycję kolumny, dzięki czemu przed treścią zostanie wstawione dodatkowe puste miejsce.

Hmm, ciekawe, z C-M-obieżącą linią również dostaje dodatkowe puste miejsce na końcu, dzięki czemu bpozycje kursora i wyrównują się po zmianie.

W trybie podstawowym C-jzmienia bufor zgodnie z oczekiwaniami na moim komputerze i C-jjest do tego zobowiązanyelectric-newline-and-maybe-indent

p_wiersig
źródło