Bagaimana cara menggeser area teks yang dipilih di Emacs dengan jumlah spasi tertentu?


26

Saya menulis kode python sehingga menggeser / memindahkan blok garis adalah penting untuk menghindari melewati setiap baris secara individual. Bagaimana saya bisa melakukan ini tanpa add-on? Apakah ada jenis perintah operasi keystroke untuk melakukan ini?


3
Untuk jawaban yang tidak spesifik dengan Python, lihat emacs.stackexchange.com/q/11 dan emacs.stackexchange.com/q/18 .
legoscia

Jawaban:


40

Gunakan perintah indent-rigidly, yang terikat C-x TABsecara default.

Anda dapat menentukan jumlah spasi untuk indentasi dengan menggunakan argumen awalan , seperti C-5 C-x TAB.

Atau Anda dapat menjalankan perintah dan kemudian menggunakan panah kiri / kanan untuk secara interaktif menyesuaikan level indentasi.


bagaimana Anda menambahkan argumen awalan?
Vass

1
Coba misalnya C-5 C-x TABuntuk indentasi wilayah saat ini 5 spasi.
glukas

bagus, tapi mengapa baris pertama tidak bergerak juga? Saya harus mengambil bagian terakhir dari garis di atas pilihan untuk membuat kumpulan garis yang ingin saya pindahkan.
Vass

1
Anda tidak perlu memilih apa pun dari baris sebelumnya, tetapi Anda ingin memilih dari awal baris pertama yang ingin Anda indentasi. Misalnya, C-auntuk pindah ke awal baris, C-SPCuntuk mulai menandai wilayah, C-n C-nuntuk turun beberapa baris, C-5 C-x TABuntuk membuat indentasi kedua baris.
glucas

1
"Gunakan panah kiri / kanan untuk secara interaktif menyesuaikan level indentasi" Benarkah? Besar! Saya tidak tahu ini, dan kadang-kadang saya harus menebak berapa banyak ruang yang perlu saya tambahkan atau hapus. Saya harap ini bisa membantu.
imz - Ivan Zakharyaschev

9

Jika Anda digunakan python-mode.el C-c >atau C-c <untuk menggeser blok ke kiri atau kanan


kenapa baris pertama dari seleksi tetap tidak tergerak jika saya tidak memilih bagian terakhir dari baris di atasnya?
Vass

Saya tidak dapat mereproduksi perilaku ini. semua baris pilihan dipindahkan. Emacs 24.4
Lompik

Komentar glucas mengatakan bahwa ini akan terjadi jika Anda tidak memilih dari awal baris
Vass

6

The string-rectangleperintah ( C-x r t) dapat digunakan untuk memasukkan teks yang sewenang-wenang (spasi termasuk) di daerah yang dipilih.

Katakanlah Anda memiliki blok teks ini dan Anda ingin memasukkan 5 spasi di depan semua baris.

abc
  def
    ghi

Pertama pilih daerah "0 kolom" seperti yang ditunjukkan di bawah ini (intinya adalah pada karakter 'a' dan tandanya ada di kolom yang sama di baris yang berisi 'ghi':

▮bc
  def
▯   ghi

Sekarang menggunakan string-rectangle, masukkan teks yang ingin Anda masukkan di wilayah yang dipilih. Dalam contoh ini, kita akan memasukkan 5 spasi pada semua baris termasuk dan di antara titik dan tanda.

C-x r t M-5 SPC RET

Itu akan memberikan teks di bawah gaya berlekuk.

     abc
       def
         ghi

4

Ada C-x TAB(terikat indent-rigidly). Berikan argumen awalan untuk menunjukkan berapa banyak ruang yang ingin Anda indentasi, negatif menghapus banyak ruang.


0

Saya menemukan bahwa dengan menekan Alt-4 dan kemudian SPC, saya mendapatkan hasil yang diinginkan. Tidak yakin apakah ini cara terbaik, tetapi itu berfungsi juga.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.