vim beralih berdasarkan nilai sebelumnya var

1

Bagaimana cara mengalihkan nilai mousedari kosong ke adan sebaliknya?

Saya menemukan diri saya banyak berpindah dari dua mode itu. asangat bagus ketika saya sudah lama di file sumber besar dan harus menggunakan roda gulir untuk menavigasi, dll.

tetapi mode mouse bisu sempurna untuk menyalin / menempel dari mana saja ke mana saja.

Saat ini saya miliki di .vimrc saya:

nmap <F11> :se mouse=<CR>
nmap <F12> :se mouse=a<CR>

tetapi akan menyenangkan untuk memiliki F11 gratis lagi (saya kehabisan kunci F) dan memiliki F12 beralih nilai itu ... ada yang punya resep untuk itu berguna?

gcb
sumber

Jawaban:

1

@Heptite benar bahwa Anda hanya menyembuhkan gejalanya dengan toggling, tetapi bagaimanapun, inilah cara Anda beralih:

:nnoremap <F12> :let &mouse=(empty(&mouse) ? 'a' : '')<CR>
  • Catatan: Anda harus menggunakan:noremap ; itu membuat pemetaan kebal terhadap memetakan dan rekursi.
  • Catatan: Untuk opsi on / off boolean sederhana, Anda dapat menggunakan :set inv{optionname}.
Ingo Karkat
sumber
Terima kasih! dan terima kasih atas petunjuk ekstra! pasti akan mengadopsi nnoremap ... untuk matikan boolean saya, saya menggunakan yang sederhana !seperti dinmap <F7> :se wrap!<CR>
gcb
0

Anda harus melihat pada:

:help 'paste'
:help 'pastetoggle'

(Kutipan tunggal dimaksudkan untuk diketik sebagai bagian dari perintah.)

Secara khusus, ini akan melakukan apa yang Anda inginkan:

:set pastetoggle=<F12>
Heptite
sumber
Saya tidak ingin menempel ke vim. Saya biasanya menggunakan mouse=COPY dengan mudah dari vim. File vim, klik dua kali dan seret, klik tengah di terminal lain ... dan kemudian saya mungkin ingin mengubah mouse=auntuk menavigasi kode dengan roda gulir.
gcb
Anda tidak perlu melakukan itu untuk menyalin dari Vim. Mungkin Anda perlu mengatur opsi 'clipboard' Anda.
Heptite
jika Anda mengakses vim melalui sesi ssh, katakanlah dempul, dan miliki mouse=a, ketika Anda memilih beberapa teks, itu tidak secara otomatis diletakkan di clipboard kotak jauh. karena vim menggunakan gerakan mouse, bukan emulator konsol. ketika Anda memiliki mouse=vim tidak menggunakan mouse, maka emulator konsol menggunakannya untuk menyorot / menyalin dari output terminal yang ditampilkannya. saya bisa menggunakan mouse=adan kemudian tekan "+ysetelah memilih di vim. tapi itu terlalu banyak masalah :)
gcb