Ich habe kürzlich gefragt:
Wie füge ich jeder Zeile ein Präfix hinzu?
Gehen Sie also vom folgenden Code aus:
I said Hello
I said There
I said I am some code
So codieren Sie wie folgt:
Hello
There
I am some code
Wie lösche ich nun n Zeichen aus einer Zeile?
text-editing
editing
Luke
quelle
quelle
Antworten:
Es ist noch einfacher! Verwenden Sie erneut Rechteckbefehle . Bewegen Sie sich zu einer Ecke des zu löschenden Rechtecks und drücken Sie
C-SPC
, um die Markierung zu setzen. Gehen Sie zur anderen Ecke des Rechtecks und drücken SieC-x r d
(delete-rectangle
). Gehen Sie beispielsweise zur ersten Zeile, auf die Sie einwirken möchten, drücken SieC-a
oderhome
, um zum Zeilenanfang zu gelangen, gehen Sie nach unten zur letzten Zeile, auf die Sie einwirken möchten, gehen Sie zur rechten unteren Ecke und löschen Sie sie.C-u number C-f
C-x r d
Wenn die letzte Zeile weniger als die gewünschte Anzahl von Zeichen enthält, ist es möglicherweise praktischer, stattdessen die linke untere und rechte obere Ecke zu verwenden. Alternativ können Sie Junk-Zeichen einfügen (dies ist nützlich, wenn sowohl die erste als auch die letzte Zeile kürzer sind).
Sie können
C-x r k
das Rechteck mit töten, umC-x r y
es später zu ziehen ( ) (bewegen Sie es in die linke obere Ecke der Stelle, an der Sie es einfügen möchten).Sie können auch
C-x r t
(string-rectangle
) verwenden und eine leere Zeichenfolge eingeben.Rechteckbefehle basieren auf Spaltenpositionen. Wenn Sie n Zeichen anstelle von n Spalten löschen möchten (was sich bei mehrspaltigen Zeichen wie Tabulatoren bemerkbar macht), können Sie reguläre Ausdrücke ersetzen : Ersetzen Sie diese
^.\{42\}
durch nichts, um die ersten 42 Zeichen jeder Zeile zu löschen.quelle
Eine andere Möglichkeit: Ich mag es wirklich, mehrere Cursor für solche Aufgaben zu verwenden. Erhältlich
package.el
über MELPA, ist es ein unverzichtbarer Bestandteil meines Emacs geworden. Ich würde einfach auswählenI said
(und möglicherweise den Zeilenumbruch davor einfügen), verwendenM-x mc/mark-all-like-this
und mich auf den Weg machen. Wenn Sie eine feinkörnigere Steuerung wünschen, können Siemc/mark-next-like-this
oder verwendenmc/mark-next-lines
.Meine Tastenkombinationen:
Die obligatorischen Emacs Rocks! Folge: http://emacsrocks.com/e13.html
quelle
Wenn Sie
cua-mode
aktiviert haben, dann:Ich bevorzuge die
cua-mode
Arbeitsweise im Vergleich zum Emacs-Standardrechteck, wo das Äquivalent wäre:Das
cua-mode
spart drei Tastendrücke im Vergleich zum Standard-Emacs-Rechteck.quelle
Der Vollständigkeit halber: Das Löschen der ersten 3 Zeichen aus jeder Zeile (formal: ab dem Punkt oder in der Region) kann durch regexp-Ersetzen
^...
(oder allgemeiner :)^.\{3\}
durch eine leere Zeichenfolge erfolgen.Erklärung: In regulärer Schreibweise
^
bedeutet "Zeilenanfang",.
"beliebiges Zeichen" und\{n\}
" n Wiederholungen des vorherigen Objekts ".Dies hat den zusätzlichen Vorteil, dass es interaktiv ist (es sei denn, man drückt
!
, wodurchquery-regexp-replace
von nun an alles ohne weitere Fragen ersetzt wird).quelle
Und noch eine Möglichkeit:
F3C-aC-3C-dC-nF4
Zeichnet ein Tastaturmakro auf, das im Grunde "an den Zeilenanfang gehen, drei Zeichen löschen und zur nächsten Zeile gehen" sagt. Anschließend können Sie es bis zum Ende des Puffers durch abspielen C-uF4oder C-xC-krauf die Linien in der Region anwenden. Dies hat einen Nachteil: Es wird unterbrochen, wenn eine Zeile weniger als 3 Zeichen enthält.
quelle
Wenn es sich nur um eine Linie handelt, können Sie mit Mz zappen, wobei vorausgesetzt wird, dass dieses Zeichen zwischen dem Punkt und dem Punkt, den Sie löschen möchten, nicht wiederholt wird. In einigen Fällen ist dies schneller als das Erstellen einer Region.
quelle