キーボードマクロで次の行を処理する方法


12

以下を使用して、バッファー内の行を結合するキーボードマクロを作成しました。

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

行が長すぎて折り返され始める場合を除き、正常に機能します。これにより、このマクロはフレームの幅に依存します。next-line次の実際の行に移動するようではなく、現在の行の「ラップ」部分に移動するようです。

その問題を回避する方法は?

回答:


13

次の2つの 3つのオプションがあります。

  1. マクロを定義するときにnext-logical-line代わりに使用しますnext-line

    カーソルをARG行の下に垂直に移動します。これはと同じですnext-lineが、変数の値を無視して、常に視覚的な線ではなく論理的な線で移動しますline-move-visual

  2. セットline-move-visualnil

    (setq line-move-visual nil)

    これにより、デフォルトのnext-lineように動作next-logical-lineします。

  3. 実行して行の切り捨てをオンにします

    M-x toggle-truncate-lines RET

    マクロを記録する前に。


パーフェクト!ありがとう。しかし、どのような状況での方がの方がnext-line現在の動作を好むのでしょうか?next-logical-line
セバスチャンルカロネック14年

@SébastienLeCallonnec私はすべてのユースケースがあると思います ...そしてEmacsがそれらをすべて処理することを知っているのは良いことです;)
itsjeyd 14年

1
@SébastienLeCallonnecErm ...自然言語で書くとき?行指向ではない状況では、通常、<down>またはを押すとC-n、行の境界を越えてジャンプするのではなく、1行下に移動することが期待されます。(何行の折り返しが全く存在しない場合)それはないすべてのユーザーがメモ帳から来ていると考えて...芋、例外は状況かなりあるnext-logical-line行動を期待されているが、これらの状況で、私は多くの場合、無効にする傾向がありvisual-line-mode、完全に。@itsjeydを+1すると、状況に応じてどちらかの動作を取得できるのは本当に素晴らしいことです。
T.バーロン14年

2
@ T.Verronまあまあ。私は常に再バインドすることができます推測C-nしますnext-logical-line。;)
セバスチャンルカロネック14年

0

C-aそして、C-eの両方を使用して、行をスキップすることができます接頭引数を取ります。たとえばC-2 C-a、次の行の先頭にジャンプし、次の行C-2 C-eの末尾にジャンプします。3の前置引数は2行移動します。負の引数を使用して前の行に移動することもできます。

明らかに、カーソルを同じ列に留める必要がある場合、これらはあまり使用されませんが、ほとんどのマクロはとにかく行の先頭または末尾に移動するため、非常に便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.