Używam ViM, TextMate i GNU Emacs od lat.
Na przykład tutaj jest tekst, który chcę edytować
foo
foo
foo
A oto wynik, który chcę uzyskać
bar foo
bar foo
bar foo
Gdy korzystam z Vima, mogę zrobić „Ctrl v” w pierwszej linii i pierwszej kolumnie, następnie nacisnąć „2 j”, następnie nacisnąć „i”, a następnie wpisać „bar”, gotowe.
Kiedy jestem w Textmate, mogę nacisnąć „Apple Command Option” zarówno podczas wybierania w dół (myszką), a następnie wpisać „pasek”, gotowe.
Ale kiedy korzystam z GNU Emacs 23.1, nie wiem, jak to zrobić. : ((
Przeszukałem EmacsWiki i googlowałem po okolicy, ale nie znalazłem rozwiązania. Proszę, prowadź mnie, jeśli znasz moje rozwiązanie. Byłbym za to wdzięczny.
Odpowiedzi:
Przychodzą mi na myśl dwie opcje. Pierwszy to prostokąty (jak wspomniano w innej odpowiedzi). Oto wyraźne wskazówki:
Inną opcją, która zapewnia bardzo ładne polecenia edycji prostokątów / kolumn, jest tryb CUA . Oto post na blogu (ujawnienie: mój blog), który opisuje, jak z niego korzystać. Aby zobaczyć moc trybu CUA, warto obejrzeć ten trzyminutowy film .
Integruję tryb CUA z następującymi (ponieważ wolę nie mieć trybu przejściowego):
źródło
W Emacs-24,4, wsparcie bazą dla prostokątów został poprawiony trochę, więc zamiast używania
C-SPC
następnieC-x r t
można zrobić:Jedną z fajnych rzeczy w porównaniu z tą
C-SPC
metodą jest to, że otrzymasz wizualną informację zwrotną na temat wybranego prostokąta. Oczywiściecua-mode
metoda również działa (i działa podobnie).źródło
cua-mode
było bardziej właściwe ... Po prostu wspomnieć o czymś: wewnątrzcua-mode
, gdy prostokąt jest podświetlony, mogę pisać i dodawać tekst. W obecnej wbudowanej emacs „podstawowa obsługa” podświetlenie znika (wybór jest „anulowany”), a dane wejściowe są wstawiane w punkcie kursora. Jest to sprzeczne z intuicją i nie jest to, czego zwykle chcę (i przyzwyczajam się do tego, jakcua-mode
to robi)(global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)
.C-t
operacja prostowania inna niż CUA (akaC-x r t
) pokazuje również podgląd nowo wstawionego tekstu podczas pisania.W emacach tego rodzaju kolumny są nazywane „prostokątami”. Więc to jest właściwa strona dokumentacji.
Wszystkie te polecenia wymagają, aby region zawierał prostokąt, na którym operujesz. Musisz więc ustawić znak na lewym górnym znaku w prostokącie i rozszerzyć obszar do prawego dolnego znaku w prostokącie. Polecenie, którego szukasz, to
M-x string-insert-rectangle
monitujący o wstawienie ciągu.źródło
Najkrótsza odpowiedź: Włącz tryb prostokąta CUA przez C-RET.
Tak byłoby w twoim przypadku
bar
SPCZobacz odpowiedź @Trey na bardziej skomplikowane rozwiązanie i linki do CUA.
źródło
Możesz użyć replace-regexp do tego:
Spowoduje to dodanie paska na początku wiersza.
źródło