Bagaimana cara memetakan kembali gg ke g?

8

Saya tidak menggunakan apa pun g combinationskecuali gg, dalam mode normal. Bagaimana saya bisa membuatnya sehingga menekan gsekali saja sudah cukup?

nnoremap g ggmembuatnya menunggu selama 3 detik atau lebih untuk kelanjutan dari perintah. Membatalkan pemetaan gsebelumnya juga tidak berhasil, karena saya tidak dapat memetakan ke ggjika saya menghapus peta g. Haruskah saya menghapus peta setiap kombinasi yang bukan gg?

Peret Finctor
sumber
7
Hanya karena Anda tidak menggunakan gpemetaan apa pun sekarang, tidak berarti Anda tidak akan menggunakannya di masa depan. Ada beberapa yang agak berguna di sana. misalnya gE, g_, gt, gT, g,, g;, gu, gU, gn, dan saya pribadi favorit gf. Lihat :h gdaftar semua pemetaan g.
Peter Rincker
Oh ya, gf luar biasa. Tetapi saya tidak membutuhkannya sesering sekarang. Mungkin saya akan memindahkannya ke hotkey terpisah ketika saya membutuhkannya. (Nama kami sangat lucu, saya bertanya-tanya apakah saya melihat nama Anda ketika saya memilih nama saya).
Peret Finctor
Dan saya ingin vim dan kurang berperilaku sama, jika memungkinkan. Lebih sedikit menggunakan satu g.
Peret Finctor
3
Saya mungkin menggunakan gvsekitar setiap 90 detik atau lebih
the_velour_fog
1
Ada juga beberapa plugin yang pemetaan defaultnya dimulai dengan g, seperti gcdalam komentar . Anda juga harus mempertimbangkan bahwa Anda akan kehabisan kunci jika Anda terus menggunakan Vim untuk waktu yang lama, dan itu membutuhkan waktu / upaya untuk melatih memori otot Anda setelah Anda terbiasa dengan pemetaan yang diberikan.
mMontu

Jawaban:

22

Dengan asumsi Anda memiliki versi Vim yang lebih baru (7.3.1261+) yang dapat Anda gunakan <nowait>

nnoremap <nowait> g gg

Meskipun, saya tidak bisa menekankan kegunaan dari beberapa gpemetaan. Berikut adalah daftar singkat gpemetaan yang bermanfaat :

  • gE - Mundur ujung kata gerak
  • g_ - ke karakter non-kosong terakhir dari sebuah baris
  • gt& gT- navigasi tab
  • g,& g;- bolak-balik melalui daftar perubahan
  • gu& gU- perubahan huruf
  • gn - Pilih pola saat ini secara visual
  • gv - pilih kembali pemilihan visual sebelumnya
  • gi - mulai mode masukkan di posisi yang sama Mode insert terakhir kali dihentikan
  • gf - buka file di bawah kursor (Favorit pribadi saya)

Lihat :h gdaftar semua gpemetaan.

Secara pribadi saya hanya akan belajar menggunakannya ggkarena itu adalah kebiasaan yang baik dan kurang dikenal sebagai emulator Vi / Vim yang baik.

Untuk bantuan lebih lanjut lihat:

:h g
:h :map-nowait
Peter Rincker
sumber
9
gijuga cukup fantastis (masuk ke mode insert di mana Anda sebelumnya meninggalkannya). Saya menggunakannya sepanjang waktu ketika saya sedang mengetik baris kode dan saya harus memeriksa sesuatu di tempat lain dalam file.
Gagang pintu
1
Ya. Ini seperti orang yang memetakan wke :w<CR>dan qke :qall<CR>karena "lebih cepat." Anda hanya merampok diri Anda sendiri dari manfaat vim.
wchargin
@WChargin oh, jadi saya bukan yang pertama. Apakah Anda tahu lebih banyak tentang remaps semacam ini, dapatkah Anda mengarahkan saya ke orang-orang itu?
Peret Finctor
2
@PeretFinctor Tidak yakin apakah Anda bercanda — maksud saya adalah bahwa remaps semacam ini adalah ide yang sangat buruk. Orang yang melakukan ini hanya mencoba menggunakan vim sebagai editor run-of-the-mill; w,, qdan gsemua menawarkan fungsionalitas yang sangat luas yang harus sering Anda gunakan saat mengedit, tetapi yang Anda tekan untuk mengurangi pecahan detik saat Anda menyimpan. Saya tidak tahu tentang Anda, tetapi saya menabung jauh lebih jarang daripada saya maju sedikit!
wchargin
1
@PeretFinctor: Mengapa Anda tidak menggunakan w / W dan b / B untuk kata-maju dan kata-mundur, cara Vim menyediakan out-of-the-box? - Anda melihat polanya di sini? Anda mencoba bergulat dengan Vim. Bergerak dengan itu, gunakan hal itu menyediakan sebagai mereka disediakan. Ini akan lebih mudah seperti itu, dan lebih bermanfaat bagi alur kerja Anda dalam jangka panjang.
DevSolar
7

Hanya untuk berpadu, jika Anda benar-benar menginginkan satu kunci - Anda masih dapat menggunakan ... satu lagi (yaitu kunci yang tidak terlalu Anda butuhkan)! Dengan cara ini Anda bisa membiarkan gawalan yang berguna sendirian.

Misalnya, Anda dapat "membebani" 0untuk beralih di antara 0dan ^fungsionalitas, saat ditekan berulang kali, dan ^sebagai gantinya digunakan gratis (karena ini merupakan karakter naik intuitif ).

Saya yakin ini tidak sempurna, tapi inilah bukti konsep cepat-n-kotor:

function! ToStartOrNonBlankToggle(mode)
    if (a:mode == 'x')
        normal! gv
    endif
    let sp = col('.')
    normal! ^
    let ep = col('.')
    if (sp == ep)
        normal! 0
    endif
endfunction

nnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('n')<cr>
onoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('o')<cr>
xnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('x')<cr>
noremap <silent> ^ gg

Di atas masih memungkinkan menggunakan 0 sebagai gerak, dan juga dari mode visual. Pada baris indentasi, y0sekarang akan menyalin dari posisi kursor ke karakter non-kosong pertama. Jika Anda ingin menyalin ke kolom awal, Anda harus melihat visual:v00y

Anda sekarang juga dapat menggunakan 13^untuk menuju ke baris 13.

VanLaser
sumber
1
Itu sebenarnya ide yang sangat bagus, terima kasih!
Peret Finctor