Bagaimana saya bisa menekan tampilan emacs pada baris baru terakhir dalam sebuah file?

11

Salah satu kebiasaan vim adalah tidak menunjukkan baris kosong di akhir file jika file tersebut diakhiri dengan karakter baris baru. Dengan cara ini, jika file tidak diakhiri dengan baris baru, tampilannya sama, hanya dengan [noeol]penanda di modeline.

Emacs di sisi lain, menampilkan baris terakhir jika file berakhir dengan baris baru, dan tidak sebaliknya.

Sementara perilaku Emacs pada dasarnya lebih masuk akal, baik atau buruk, saya sudah terbiasa dengan yang sebelumnya.

Apakah ada cara untuk menekan tampilan baris kosong terakhir, sementara masih mengharuskan file menjadi baris baru dihentikan?

Emacs perilaku baris baru

Tangkapan layar memperlihatkan tiga jendela (lihat gambar di tab baru jika terlalu kecil):

  1. Jendela emacs besar di sebelah kiri masuk hexl-mode, menunjukkan kepada Anda bahwa sebenarnya ada baris baru di akhir file (0a, tempat kursor diposisikan).

  2. Jendela Emacs di kanan atas, dengan kursor di baris ketiga yang kosong.

  3. Jendela Vim di kanan bawah, dengan kursor di baris teks terakhir. Kursor tidak dapat bergerak di bawah titik ini, meskipun file berakhir dengan baris baru (tidak ada [noeol]penanda pada baris status vim).

sykora
sumber
Bagaimana baris baru ditampilkan? Apakah ini ditampilkan karena Anda memiliki beberapa mode minor yang diaktifkan? Akan bermanfaat untuk menempatkan cuplikan dari pengaturan Anda yang menampilkan baris baru terakhir. Tangkapan layar itu juga akan bermanfaat.
Kaushal Modi
2
Dengan "display", saya tidak bermaksud bahwa ada representasi visual dari baris baru. Maksud saya, saya bisa memindahkan kursor ke baris itu.
sykora
Tidak dapat mereproduksi: imgur.com/IAoV7p9 Perilaku yang sama dengannya emacs -Q, pasti ada sesuatu dalam file init Anda.
T. Verron
Atau tunggu ... maksud Anda Anda tidak ingin dapat pindah ke garis itu, meskipun garis itu ada? Saya kedua @kaushalmodi, screenshot dari vim dan perilaku emacs akan berguna.
T. Verron
3
@sykora Cobalah untuk menggunakan tangkapan layar minimal . Ada banyak ruang kosong berlebih dan berlebih di tangkapan layar, menjadikannya lebih besar dari yang seharusnya, yang membuat gambar mini hampir tidak berguna, karena terlalu kecil untuk melihat apa yang sedang terjadi. Saat mengambil tangkapan layar, ubah ukuran jendela agar sesuai dengan isinya.
lunaryorn

Jawaban:

1

Biarkan saya memberikan saran yang mengerikan untuk mengimplementasikannya:

(defun make-eof-intangible ()
  (interactive)
  (add-hook 'post-command-hook (lambda ()
                                 (when (and (equal (point) (point-max))
                                            (looking-back "\n"))
                                   (backward-char))) t t))

(Saya menggunakan hook lokal karena saya curiga pengaturannya secara global mungkin mengacaukan segalanya, jadi lebih baik aktifkan berdasarkan per-buffer)

Sigma
sumber
1

Ini mungkin bukan yang Anda inginkan, tetapi mungkin bermanfaat.

  • Saya menggunakan linum-modemode minor di semua buffer saya (atur (global-linum-mode t)dalam file init Anda). Ini menunjukkan nomor baris hanya untuk baris yang memiliki karakter baris baru di akhir.

  • Hal lain yang mungkin Anda sukai adalah mengaktifkan whitespace-mode, secara default ini menunjukkan $tanda abu-abu pada baris kosong, sehingga memungkinkan Anda untuk melihat baris mana yang kosong. Lihat halaman Emacs Wiki di sini .

  • Dengan cara yang sama, pengaturan indicate-empty-linesuntuk takan menunjukkan kepada Anda di mana baris terakhir berada (lihat manual untuk indikator pinggiran di sini ).

ph0t0nix
sumber