Wie gehe ich mit der nächsten Zeile in einem Tastaturmakro um?

12

Ich habe ein Tastaturmakro erstellt, um Zeilen in einem Puffer zu verbinden:

F3 C-n M-x join-line RET F4.

Es funktioniert einwandfrei, es sei denn, die Zeilen werden zu lang und beginnen umzubrechen - wodurch dieses Makro von der Breite des Rahmens abhängt. next-linescheint nicht zur nächsten tatsächlichen Zeile zu gehen, sondern zum "Umbruch" -Teil der aktuellen Zeile.

Wie kann man dieses Problem umgehen?

Sébastien Le Callonnec
quelle

Antworten:

13

Sie haben zwei drei Möglichkeiten:

  1. Verwenden Sie next-logical-lineanstelle von next-linebeim Definieren des Makros:

    Bewegen Sie den Cursor vertikal nach unten ARG. Dies ist identisch mit next-line, außer dass es sich immer um logische Linien anstelle von visuellen Linien bewegt und den Wert der Variablen ignoriert line-move-visual.

  2. Setze line-move-visualauf nil:

    (setq line-move-visual nil)

    Dadurch next-lineverhält es sich next-logical-linestandardmäßig so.

  3. Schalten Sie die Leitungskürzung ein, indem Sie tun

    M-x toggle-truncate-lines RET

    vor dem Aufnehmen des Makros.

itsjeyd
quelle
Perfekt! Vielen Dank. Ich frage mich, in welcher Situation Sie das next-linederzeitige Verhalten dem vorziehen würden next-logical-line...
Sébastien Le Callonnec
@ SébastienLeCallonnec Ich denke, es gibt einen Anwendungsfall für alles ... und es ist gut zu wissen, dass Emacs sie alle handhabt;)
22.
1
@ SébastienLeCallonnec Ähm ... beim Schreiben in natürlicher Sprache? Wenn Sie in einer nicht linienorientierten Situation auf <down>oder drücken C-n, werden Sie normalerweise eine Zeile nach unten springen, nicht über die Liniengrenze hinaus. Denken Sie, dass nicht jeder Benutzer vom Notizblock kommt (wo überhaupt kein Zeilenumbruch stattfindet) ... Imo, die Ausnahme sind eher Situationen, in denen next-logical-linedas erwartete Verhalten vorliegt, und in diesen Situationen tendiere ich oft dazu, alles zu deaktivieren visual-line-mode. Und +1 @itsjeyd, es ist wirklich schön, je nach Situation eines der beiden Verhalten zu bekommen.
T. Verron
2
@ T.Verron Fair genug. Ich glaube , ich kann immer neu binden C-nzu next-logical-line. ;)
Sébastien Le Callonnec
0

C-aund C-ebeide verwenden ein Präfixargument, mit dem Sie Zeilen überspringen können. Springt beispielsweise C-2 C-azum Anfang der nächsten Zeile und C-2 C-ezum Ende der nächsten Zeile. Ein Präfixargument von 3 verschiebt zwei Zeilen und so weiter. Sie können auch negative Argumente verwenden, um zu vorherigen Zeilen zu wechseln.

Natürlich sind diese Optionen nicht sehr nützlich, wenn Sie den Cursor in der gleichen Spalte halten müssen, aber ich finde, dass die meisten meiner Makros sowieso den Anfang oder das Ende einer Zeile enthalten, sodass sie sehr praktisch sind.

Alan Third
quelle