Baru-baru ini ada add-on untuk NeoVim yang memungkinkan pembukaan terminal dalam buffer vim. Ini memiliki kemungkinan menarik untuk mengirim teks dari satu jendela vim ke replikasi lain, misalnya, perilaku seperti REPL.
Di masa lalu saya menggunakan tmux untuk konfigurasi seperti ini. Namun sekarang saya ingin mencobanya hanya menggunakan NeoVim.
Pertanyaan saya adalah - bagaimana saya bisa mengirim blok teks dari satu vim split ke yang lain? Atau mungkin lebih - bagaimana saya bisa mengotomatiskan urutan pemilihan teks, menariknya, mengubah pemisahan dan menempelkannya?
sumber
p
buffer terminal tidak masuk ke mode Terminal, jadi yang berikut ini<C-\><C-N>
tidak perlu. (Yang mengatakan, itu juga sama sekali tidak berbahaya.)Buffer terminal Neovim selalu memiliki id pekerjaan terkait, jadi salah satu caranya adalah dengan menggunakan API kontrol pekerjaan untuk mengirim teks. Tambahkan ini ke vimrc Anda:
Yang akan menyimpan id pekerjaan terminal yang dibuat terakhir ke dalam
g:last_terminal_job_id
variabel. Kemudian Anda dapat membuat beberapa fungsi / perintah / pemetaan yang akan mengirim data menggunakanjobsend
fungsi, berikut ini contohnya:Di atas akan mengirim baris saat ini, tetapi Anda dapat memperluasnya untuk mengirim pemilihan visual.
sumber
Neoterm adalah plugin untuk neovim yang dikembangkan untuk tujuan ini. Ini mengimplementasikan perintah baru
:TREPLSend
yang akan mengambil baris saat ini dan mengirimkannya ke jendela terminal. Berfungsi baik untuk bash dasar dan bahasa apa pun yang memiliki mode REPL.sumber
Selain jawaban di sini saya telah menerapkan plugin untuk tujuan ini: vim-sendtowindow .
Ini menyediakan operator kirim-ke-jendela yang dapat dikombinasikan dengan gerakan vim apa pun untuk memilih teks untuk dikirim ke jendela yang berdekatan. Selain itu, posisi kursor tepat setelah teks yang dikirim dan dot berulang
Contoh kecil di bawah ini:
sumber