Dalam vim terminal, menempelkan data clipboard sering mengacaukan indentasi kode.
Saya hanya tahu jika saya menggunakan :set paste
indentasi tidak rusak.
Padahal, setelah menempelkan data, harus saya lakukan :set nopaste
lagi? Bagaimana jika saya tidak melakukannya, masalah apa yang muncul?
16
Jawaban:
Seperti yang ditulis orang lain, Anda tidak ingin membiarkan set 'tempel'. Saya hanya ingin menunjukkan bahwa dengan emulator terminal yang baik dan dikompilasi dan dikonfigurasi dengan benar
vim
, Anda tidak perlu mengubah 'rekatkan'. Anda memerlukan emulator terminal yang baik seperti xterm atau Terminal GNOME, vim dengan fitur X11 disertakan, dan opsi 'mouse' diatur ke 'a'. Kemudianvim
akan "tahu" ketika Anda menempelkan mouse dan secara efektif akan mengatur dan menghapus opsi 'tempel' untuk Anda.Salah satu cara untuk mendapatkan
vim
dengan fitur X11 untuk dijalankangvim
dengan-v
pilihan atau buat alias,Lalu letakkan
di ~ / .vimrc Anda.
sumber
Copy
akan berwarna abu-abu atau tidak terlihat sama sekali kecuali beberapa teks telah dipilih. Bagaimana Anda memilih teks yang akan disalin?Posting ini memiliki jawaban favorit saya, https://coderwall.com/p/if9mda/automatically-set-paste-mode-in-vim-when-pasting-in-insert-mode
Pada dasarnya jika Anda mulai dalam mode Sisipkan dan menggunakan Ctrl + Shift + V atau klik kanan tempel dengan mouse Anda, Vim mendeteksi bahwa ini berasal dari terminal dan secara otomatis menyetel mode tempel, lalu hapus kodenya setelah selesai, sehingga Anda tidak kehilangan kunci yang dipetakan ulang (yang tidak dapat bekerja dalam mode tempel karena menulis data mentah) dan Anda kembali ke keadaan "waras" ketika selesai.
Untuk vim saja (masukkan .vimrc Anda)
Jika Anda menggunakan vim di bawah Tmux (masih berjalan di .vimrc)
sumber
let &t_SI .= "\<Esc>[?xxxxx"
garis mendeteksi pintasan tempel keyboard? Apakah ini berfungsi untuk mac juga diberi jalan pintas yang berbeda?Seperti yang disarankan romainl, dokumentasi menjelaskan pengaturan itu
'paste'
Opsi menonaktifkan beberapa opsi lain, dan Anda pasti akan menemukan bahwa lebih cepat daripada nanti itu akan menyebabkan masalah bagi Anda. Untuk alasan ini, ada'pastetoggle'
pilihan. Lihat:sumber
Jika ada sesuatu, itu harus memiliki maknanya. Anda harus memperhatikan dokumentasi vim yang sangat berguna.
Setelah membaca, Anda mungkin menginginkan ini:
Saya harap posting ini bermanfaat :)
sumber
IIRC ketika Anda menempelkan ke vim, pada dasarnya berpikir bahwa Anda mengetik semua karakter itu sendiri. Jadi jika indentasi diaktifkan, itu akan membuat indentasi untuk Anda, tetapi teks yang disisipkan biasanya sudah mengandung indentasi sehingga indentasi memang "kacau". Beralih ke mode tempel mematikan hal-hal seperti indentasi otomatis.
Jika Anda suka indentasi otomatis seperti yang Anda ketik, Anda harus mengubahnya kembali ke nopaste setelah selesai menempel. Cobalah dan catat bagaimana Anda harus melakukan semua lekukan secara manual dalam mode tempel.
sumber