Bagaimana menangani baris berikutnya di keyboard makro?

12

Saya membuat makro keyboard untuk bergabung dengan garis dalam buffer menggunakan:

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

Ini berfungsi dengan baik, kecuali ketika garis terlalu panjang dan mulai membungkus - yang membuat makro ini tergantung pada lebar bingkai. next-linesepertinya tidak menuju ke baris aktual berikutnya, tetapi ke bagian "pembungkus" dari baris saat ini.

Bagaimana cara mengatasi masalah itu?

Sébastien Le Callonnec
sumber

Jawaban:

13

Anda memiliki dua tiga opsi:

  1. Gunakan next-logical-linealih-alih next-linesaat mendefinisikan makro:

    Pindahkan kursor ke bawah secara vertikal ARG. Ini identik dengan next-line, kecuali bahwa ia selalu bergerak dengan garis logis, bukan garis visual, mengabaikan nilai variabel line-move-visual.

  2. Setel line-move-visualke nil:

    (setq line-move-visual nil)

    Ini membuat next-lineberperilaku seperti next-logical-linesecara default.

  3. Nyalakan pemotongan jalur dengan melakukan

    M-x toggle-truncate-lines RET

    sebelum merekam makro.

itu hanya
sumber
Sempurna! Terima kasih. Saya bertanya-tanya dalam situasi apa Anda lebih memilih next-lineperilaku saat ini daripada next-logical-line...
Sébastien Le Callonnec
@ SébastienLeCallonnec Saya kira ada use case untuk semuanya ... dan ada baiknya mengetahui bahwa Emacs menangani semuanya;)
itsjeyd
1
@ SébastienLeCallonnec Erm ... saat menulis dalam bahasa alami? Dalam situasi yang tidak berorientasi garis, menekan <down>atau C-nbiasanya diharapkan membuat Anda turun satu baris, tidak melewati batas garis. Pikirkan bahwa tidak setiap pengguna berasal dari notepad (di mana tidak ada pembungkus garis, sama sekali) ... Imo, pengecualiannya adalah situasi di mana next-logical-lineperilaku yang diharapkan, dan dalam situasi ini, saya sering cenderung menonaktifkan visual-line-modesama sekali. Dan +1 @itsjeyd, sungguh menyenangkan bisa mendapatkan perilaku yang baik tergantung situasinya.
T. Verron
2
@ T. Verron Cukup adil. Saya kira saya selalu bisa rebind C-nke next-logical-line. ;)
Sébastien Le Callonnec
0

C-adan C-ekeduanya mengambil argumen awalan yang memungkinkan Anda melewati garis. Misalnya, C-2 C-aakan melompat ke awal baris berikutnya dan C-2 C-eakan melompat ke akhir baris berikutnya. Argumen awalan 3 memindahkan dua baris, dan seterusnya. Anda juga dapat menggunakan argumen negatif untuk pindah ke baris sebelumnya.

Jelas ini tidak banyak digunakan ketika Anda membutuhkan kursor untuk tetap berada di kolom yang sama, tetapi saya menemukan sebagian besar makro saya melibatkan pergi ke awal atau akhir baris, jadi mereka sangat nyaman.

Alan Ketiga
sumber