Scrolling halus untuk vim di Mac Terminal / iTerm?

13

Apakah mungkin untuk mendapatkan pengguliran yang lancar (menggunakan roda gulir mouse atau panel sentuh macbook) di dalam terminal di Mac OSX (Lion)? Selain itu, bisakah saya melakukan ini dalam vim?

Saya menemukan bahwa pengguliran yang lancar membantu pembacaan kode, saya tidak suka ketika Anda hanya dapat menggulir dalam garis diskrit yang bertentangan dengan pengguliran piksel demi piksel yang berkesinambungan.

Terima kasih

Eddy
sumber
Anda mungkin memiliki pengalaman yang lebih baik jika Anda menggunakan aplikasi Vim daripada menggunakannya dalam sesi terminal ( code.google.com/p/macvim , macvim.org/OSX ). Apakah ada alasan Anda perlu menggunakannya di dalam terminal?
Chris Page
3
MacVim juga tidak menyediakan pengguliran yang lancar.
romainl
Hai @romainl. Saya bertanya-tanya bagaimana vim berperilaku jika ukuran buffer (ukuran windows) benar-benar besar (yaitu ukuran seluruh file). GOtta menguji ini. Kemudian kita bisa menempatkan buffer vim di dalam widget GTK (atau QT) yang sedang bergulir dan gulir seluruh buffer vim di dalam widget dengan lancar. Ini akan memiliki manfaat tambahan bahwa kursor dapat dengan mudah disembunyikan seperti dengan editor modern. Saat pengguna menggerakkan kursor, widget akan tahu (menggunakan API yang sama dengan penggunaan gVim) dan memasukkan kembali posisi gulir yang sesuai.
trusktr
(lanjutan). Pemisahan jendela bahkan dapat dilakukan dengan menduplikasi output file-length penuh vim ke widget baru dan menggulir widget dengan lancar ke posisi yang sesuai. Ini semua akan membutuhkan aritmatika sederhana dan pengetahuan yang baik tentang toolkit widget yang bagus. Membagi jendela (horizontal dan vertikal) dan menggulir dan mengubah ukuran widget akan menjadi. Sisanya adalah sepotong kue untuk dilakukan (menu, tab, hal-hal yang sudah dilakukan gVim dan qVim).
trusktr
(lanjutan). Ini juga berpotensi untuk meningkatkan kinerja vim. Pikirkan tentang ini: setiap kali Anda menggulir konsol vim atau g / qvim windows (saat ini), vim harus menulis ulang hampir setiap karakter di layar. Jika penyangga vim panjangnya penuh, dan pengguliran ditangani secara independen oleh widget pengguliran halus, vim hanya perlu memperbarui nilai satu baris karakter pada satu waktu kapan pun Anda memindahkan kursor ke baris baru (atau lebih baik lagi, satu karakter saat Anda bergerak maju atau mundur satu karakter). Ini akan menjadi keuntungan kinerja BESAR untuk vim!
trusktr

Jawaban:

5

Saya menggunakan iterm2, dan saya menemukan fungsionalitas yang sangat bagus menggunakan vim 7.3 di terminal dengan opsi berikut:

set mouse=niv #or set mouse=a
set clipboard=unnamed

EDIT: set mouse = a juga tampaknya keren untuk digunakan seperti yang ditunjukkan oleh saran lainnya.

Apa yang dilakukan adalah secara otomatis mengubah Anda ke mode visual dari normal saat memilih teks, atau ke mode yang mengatakan - (masukkan) VISUAL - dari mode insert. Ini juga memiliki keuntungan praktis daripada tidak mengatur mode ini sama sekali ketika Anda memiliki nomor baris atau nomor relatif, itu akan melanjutkan dan menyalin angka-angka yang Anda mungkin tidak ingin menyalin. Ketika ini menjatuhkan Anda ke mode visual yang diaktifkan mouse dengan cara ini, itu menghindari menyalin nomor-nomor baris, karena berfungsi untuk mengontrol pemilihan mode visual daripada pemilihan terminal asli (yang ditekan). Menggulir berfungsi dengan baik di seluruh, mengingat bahwa ia memilih semuanya dari tempat Anda memulai seleksi ke bagian bawah layar. Lupakan ctrl + c / ctrl + v dalam vim - Anda menggunakan perintah vim yankypasta (y, yy, p,

http://vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing#Comments

Sekali lagi, iterm2 - terminal bawaan osx adalah sampah. Saya tidak benar-benar melihat daging sapi Anda dengan pengguliran baris demi baris, karena saya senang dengan bagaimana ini berfungsi seperti seharusnya, tetapi mungkin karena alasan yang sama mengapa saya tidak bisa menonton orang lain bermain video game dari mabuk perjalanan atau mengapa fluorescent light dan CRT monitor flicker mengacaukan kepala orang-orang sampai ke titik migrain. Coba sesuaikan kecepatan refresh di otak Anda, Anda bisa merasakan kenopnya jika Anda menekan ke pelipis Anda cukup keras dan berputar.

Dmitri DB
sumber
0

Saya benar-benar tidak setuju dengan Anda tetapi di sini ada plugin Terminal.app yang melakukan apa yang Anda inginkan dan banyak lagi.

Anda mungkin perlu menambahkan

set mouse=a

ke .vimrc Anda. Lihat :help mouseuntuk info lebih lanjut.

romainl
sumber
Sayangnya plugin ini memerlukan SIMBL, yang tidak tersedia untuk Lion
Eddy
Saya tidak tahu karena saya tidak punya Lion. MouseTerm adalah satu-satunya cara untuk menambahkan gulir mouse ke Terminal.app yang pernah saya dengar. Tampaknya beberapa orang telah melaporkan keberhasilan yang terbatas dalam menggunakan SIMBL di Lion, sudahkah Anda mencobanya? Saya juga melihat bahwa iTerm2 menyediakan "pelaporan mouse" dan menggulir tetapi mungkin akan menggulir baris demi baris. Sebagai catatan saya hampir tidak gulir (atas / bawah / j / k) lagi: Saya menemukan /, ?, fF, tTdan <C-f>/ <C-b>jauh lebih berguna.
romainl
Perhatikan bahwa ini membuat pengguliran roda mouse berfungsi, tetapi itu tidak mengatasi masalah utama: "Saya tidak suka ketika Anda hanya dapat menggulir dalam garis diskrit sebagai lawan pengguliran piksel demi piksel yang berkelanjutan."
Chris Page
Jenis pengguliran (baris demi baris) di-hardcode dalam Vim. Untungnya tidak ada jalan lain. Jika seseorang benar-benar membutuhkannya, dia harus bersikeras dengan argumen yang ditulis dengan hati-hati tentang vim-dev atau memberikan tambalan.
romainl
Alasan mengapa saya ingin pengguliran yang lancar adalah karena saya cenderung kehilangan tempat saya ketika menggulirkan garis-garis secara terpisah. Sulit dijelaskan. Mungkin itu tidak mempengaruhi semua orang tetapi bagi saya
Eddy