gpt4 book ai didi

vim - 如何在 Vim 中制作 'intelligent' 键映射?

转载 作者:行者123 更新时间:2023-12-01 15:32:27 24 4
gpt4 key购买 nike

目前我的 Vimrc 中有如下映射:

" Quick Buffer switch mappings {{{
" The idea is to press <leader> and then the number from normal mode to switch
" e.g. `,2` would switch to the second buffer (listed at the top of the
" airline strip
nnoremap <Leader>1 :1b<CR>
nnoremap <Leader>2 :2b<CR>
nnoremap <Leader>3 :3b<CR>
nnoremap <Leader>4 :4b<CR>
nnoremap <Leader>5 :5b<CR>
nnoremap <Leader>6 :6b<CR>
nnoremap <Leader>7 :7b<CR>
nnoremap <Leader>8 :8b<CR>
nnoremap <Leader>9 :9b<CR>
nnoremap <Leader>10 :10b<CR>
nnoremap <Leader>11 :11b<CR>
nnoremap <Leader>12 :12b<CR>
nnoremap <Leader>13 :13b<CR>
nnoremap <Leader>14 :14b<CR>
nnoremap <Leader>15 :15b<CR>
nnoremap <Leader>16 :16b<CR>

" Quick Buffer wipe/delete keys. Press <Leader> and then d and buffer number
" e.g. `,d2` would wipe buffer 2

nnoremap <Leader>d1 :Bdelete 1<CR>
nnoremap <Leader>d2 :Bdelete 2<CR>
nnoremap <Leader>d3 :Bdelete 3<CR>
nnoremap <Leader>d4 :Bdelete 4<CR>
nnoremap <Leader>d5 :Bdelete 5<CR>
nnoremap <Leader>d6 :Bdelete 6<CR>
nnoremap <Leader>d7 :Bdelete 7<CR>
nnoremap <Leader>d8 :Bdelete 8<CR>
nnoremap <Leader>d9 :Bdelete 9<CR>
nnoremap <Leader>d10 :Bdelete 10<CR>
nnoremap <Leader>d11 :Bdelete 11<CR>
nnoremap <Leader>d12 :Bdelete 12<CR>
nnoremap <Leader>d13 :Bdelete 13<CR>
nnoremap <Leader>d14 :Bdelete 14<CR>
nnoremap <Leader>d15 :Bdelete 15<CR>
nnoremap <Leader>d16 :Bdelete 16<CR>
" }}}

它们工作得很好,但我不禁认为这在 vimrc 中应该更智能/更干燥。例如,如果我打开一个编号为 17 的缓冲区会怎么样。

有没有一种方法可以智能地映射这些,以便用户可以输入,然后输入任何缓冲区编号来打开缓冲区?

最佳答案

您可以使用带有 :execute 的元编程来自动创建这些映射:

for i in range(1, 99)
execute printf('nnoremap <Leader>%d :%db<CR>', i, i)
endfor

也可以定义一个映射(只有一个前缀),然后通过 getchar() 查询数字。这里的挑战是确定何时结束它,您可以通过单独的映射免费获得一些东西(由于 'timeout')。这就是为什么我更喜欢这里的第一个解决方案。

关于vim - 如何在 Vim 中制作 'intelligent' 键映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com