Memahami kombinasi CTRL-U

21

Dalam jawaban ini saya menghadapi CTRL-Upanggilan fungsi yang digunakan setelah :dan sebelum nama fungsi yang sebenarnya.

:nnoremap <buffer> <cr> :<C-U>call append('.', repeat([''],v:count1))<cr>

Inilah yang dikatakan bantuan:

CTRL-U      Scroll window Upwards in the buffer.  The number of
            lines comes from the scroll option (default: half a
            screen).  If [count] given, first set the 'scroll'
            option to [count].

Saya mencobanya sendiri dan berhasil seperti yang seharusnya. Tetapi saya tidak begitu mengerti bagian tentang scrollopsi itu. Apa artinya 'scroll' option?

Dan selain itu melakukan beberapa hal aneh dalam mode insert. Sejauh yang saya mengerti itu menghapus semuanya dari kursor ke awal baris dan kemudian bergabung dengan garis yang dihasilkan dan garis di atas.

pengguna3663882
sumber

Jawaban:

29

Bantuan, secara default, mengembalikan pemetaan apa pun yang berlaku ke mode normal. Dalam mode normal, <C-u> tidak scroll ke atas, tapi bukan itu yang kita tertarik. Untuk melihat apa yang <C-u>dilakukannya dalam mode command line, atau cmode , (mode di mana Anda mengetik perintah dimulai dengan usus) pencarian:h c_CTRL-u

                            *c_CTRL-U*
CTRL-U      Remove all characters between the cursor position and
        the beginning of the line.  Previous versions of vim
        deleted all characters on the line.  If that is the
        preferred behavior, add the following to your .vimrc: >
            :cnoremap <C-U> <C-E><C-U>

Untuk memahami mengapa ini berguna untuk pemetaan mode normal, coba hapus, coba ketikkan sesuatu seperti 5:, dan lihat apa yang muncul. Anda harus melihat sesuatu seperti:

:.,.+4

Ini kisaran

Sekarang coba ketikkan 5:<C-u>dan lihat apa yang muncul. Anda hanya harus melihat

:

Demikian pula dalam mode visual, menekan :memasukkan kisaran

:'<,'>

Itu sebabnya Anda akan sangat sering melihat pemetaan seperti:

nnoremap foo :<C-u>bar

atau

xnoremap foo :<C-u>bar
James
sumber