Jak usunąć kilka pierwszych n znaków z każdej linii?


Odpowiedzi:


28

To jeszcze łatwiejsze! Ponownie użyj poleceń prostokątnych . Przejdź do jednego rogu prostokąta, który chcesz usunąć, naciśnij, C-SPCaby ustawić znak. Przejdź do drugiego rogu prostokąta i naciśnij C-x r d( delete-rectangle). Na przykład przejdź do pierwszej linii, na której chcesz działać, naciśnij C-alub, homeaby przejść do początku linii, przejdź do ostatniej linii, na której chcesz działać, aby przejść do prawego dolnego rogu, a następnie usuń.C-u number C-fC-x r d

Jeśli ostatni wiersz zawiera mniej niż pożądaną liczbę znaków, wygodniej może być zamiast tego użyć lewego dolnego i prawego górnego rogu. Alternatywnie możesz wstawić niepotrzebne znaki (jest to przydatne, jeśli zarówno pierwszy wiersz, jak i ostatni wiersz są krótsze).

Możesz użyć C-x r kdo zabicia prostokąta, który pozwala ci go szarpać ( C-x r y) później (przejdź do lewego górnego rogu miejsca, w którym chcesz go wstawić).

Możesz także użyć C-x r t( string-rectangle) i wprowadzić pusty ciąg.

Polecenia prostokąta są oparte na pozycjach kolumn. Jeśli chcesz usunąć n znaków zamiast n kolumn (co robi różnicę w przypadku znaków wielokolumnowych, takich jak tabulatory), możesz użyć zamiany wyrażeń regularnych : zamień ^.\{42\}na nic, aby usunąć pierwsze 42 znaki każdej linii.


3
zamiast próbować zapamiętać wszystkie polecenia prostokąta, możesz również użyć Cx spc, zamiast C-spc, który zamienia region w prostokąt i wszystko po prostu działa.
Malabarba

1
@Malabarba Tylko od czasu Emacsa 24. (Pisze to na maszynie z Emacsem 23. Nadal jest ich bardzo dużo.)
Gilles „SO- przestań być zły”

2
Moje kondolencje ... :-(
Malabarba

To właśnie działało dla mnie na GNU Emacs 23.4.1 (x86_64-pc-linux-gnu, GTK + wersja 2.24.21) z 2013-10-25 na ziele angielskie, zmodyfikowane przez Debian
davidrmcharles

4

Inna możliwość: naprawdę lubię używać wielu kursorów do takich zadań. Dostępny w package.elMELPA, stał się nieodłączną częścią moich emacs. Po prostu wybrałbym I said(i ewentualnie dołączałbym przed nim podział linii), użyłem M-x mc/mark-all-like-thisi byłem na mojej drodze. Jeśli chcesz uzyskać bardziej szczegółową kontrolę, możesz użyć mc/mark-next-like-thislub mc/mark-next-lines.

Moje skróty klawiszowe:

(use-package multiple-cursors
  :bind (("C->"   . mc/mark-next-like-this)
         ("C-M->" . mc/mark-all-like-this-dwim)))

Obowiązkowe Emacs Rocks! odcinek: http://emacsrocks.com/e13.html


3

Jeśli cua-modewłączyłeś, to:

  • C-a przejść na początek linii,
  • C-RET aby rozpocząć prostokąt,
  • Następnie poruszaj za pomocą klawiszy strzałek lub dowolnego polecenia emacs move, takiego jak C-f
  • DEL aby usunąć wybór

Wolę cua-modesposób pracy, niż standardowy prostokąt Emacsa, gdzie odpowiednikiem byłoby:

  • C-a przejść na początek linii,
  • C-SPC aby rozpocząć prostokąt,
  • Następnie poruszaj za pomocą klawiszy strzałek lub dowolnego polecenia emacs move, takiego jak C-f
  • C-x r d aby usunąć wybór

cua-modeOszczędza trzech naciśnięć klawiszy w porównaniu do standardowej Emacs prostokąta.


3

W trosce o kompletność: usunięcie pierwszych 3 znaków z każdej linii (formalnie: od punktu lub w regionie) można wykonać przez zastąpienie wyrażenia regularnego ^...(lub bardziej ogólnie :) ^.\{3\}pustym ciągiem.

Objaśnienie: w wyrażeniu regularnym ^oznacza „początek linii”, .oznacza „dowolny znak” i \{n\}n powtórzeń rzeczy przed”.

Ma to dodatkową zaletę bycia interaktywnym (chyba że się naciska !, co powoduje, że query-regexp-replaceodtąd wszystko zastępuje się bez dalszych pytań).


1
Dlaczego opinie negatywne?
mbork,

0

I jeszcze jedna możliwość:

F3C-aC-3C-dC-nF4

rejestruje makro klawiatury, mówiąc w zasadzie „przejdź do początku linii, usuń trzy znaki i przejdź do następnej linii”. Następnie możesz odtworzyć go do końca bufora przez C-uF4lub C-xC-krzastosować do linii w regionie. Ma to jedną wadę: pęknie, gdy jakaś linia ma mniej niż 3 znaki.


-1

Jeśli jest to tylko linia, którą możesz przełączyć na char z Mz, zakładając, że znak nie jest powtarzany między punktem a tym, który chcesz usunąć. W niektórych przypadkach jest to szybsze niż tworzenie regionu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.