Ini menanggapi pertanyaan umum Anda, tetapi tidak terutama untuk kasus penggunaan yang Anda sebutkan (memindahkan bit kode).
Emacs sekarang memiliki apa yang disebutnya wilayah yang tidak bersebelahan , yang merupakan jenis seleksi yang Anda tanyakan. Vanilla Emacs tidak menyediakan cara khusus untuk membuat wilayah yang tidak bersebelahan, kecuali jika itu adalah persegi panjang . Tapi perpustakaan Zona tidak.
Zona Perpustakaan memungkinkan Anda menentukan beberapa zona dalam buffer Anda. Sebuah daftar zona adalah daerah noncontiguous . Anda juga bisa menganggapnya sebagai beberapa wilayah, tergantung pada bagaimana Anda ingin menggunakannya. Anda dapat memiliki beberapa daftar zona yang ditentukan kapan saja, masing-masing ditugaskan ke variabel zona yang berbeda, dan Anda dapat beralih di antaranya.
Jika Anda juga menggunakan perpustakaan Bookmark + maka Anda dapat menyimpan daftar zona secara terus-menerus dan mengembalikannya di sesi Emacs nanti. Bookmark + juga memungkinkan Anda menetapkan tag sewenang-wenang ke bookmark. Ini berarti Anda dapat menandai daftar zona.
Zona-zona dalam daftar zona tertentu biasanya di buffer yang sama, tetapi mereka tidak perlu. Dalam hal ini, daftar zona lebih umum daripada wilayah yang tidak berdekatan. Ini juga lebih umum karena setiap zona dapat berisi informasi tambahan, selain hanya batas zona, dan dapat memiliki pengidentifikasi.
Ada beberapa cara untuk membuat zona. Salah satu yang paling mudah adalah dengan menggunakannya C-x n a
: ia mendefinisikan zona dari wilayah aktif, dan menambahkannya ke set zona saat ini. ( C-x n n
( narrow-to-region
) juga melakukan ini, selain penyempitan.)
Ini adalah beberapa hal yang dapat Anda lakukan dengan satu set (daftar) zona:
- Sortir mereka.
- Menyatukan (menyatu) zona yang berdekatan atau tumpang tindih (yang termasuk menyortirnya).
- Persimpangan mereka.
- Persempit buffer ke zona dalam daftar. Siklus di antara penyempitan. Lihat Banyak Penyempitan .
- Pilih zona dalam daftar sebagai wilayah aktif. Siklus antar wilayah.
- Cari mereka (mereka secara otomatis bersatu terlebih dahulu). Untuk ini, Anda perlu pustaka Isearch + .
- Permintaan-ganti mereka.
- Sorot dan sorot mereka. (Untuk ini, Anda memerlukan Sorotan perpustakaan atau perpustakaan
facemenu+.el
.
Lihat juga Narrow Indirect , yang memungkinkan Anda membuat buffer tidak langsung yang merupakan klon dari buffer yang diberikan dan yang dipersempit ke bagian yang berbeda.