Есть ли способ заставить функцию vim создавать сопоставления для вас? - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь создать в vim функцию, способную создавать для меня сопоставления. Это значит, что мне не нужно снова и снова вводить очень похожие команды в моем vimr c.

Возьмите эти два сопоставления в качестве примера ...

onoremap <buffer> in( :<c-u>execute "normal! /(\r:noh\rvi("<cr>
onoremap <buffer> in[ :<c-u>execute "normal! /[\r:noh\rvi["<cr>

(это сопоставления, ожидающие выполнения оператора для в скобках или квадратных скобках)

То, что делают сопоставления, на самом деле не важно для вопроса, я хотел бы знать, могу ли я создать функцию убрать все повторения. Я хотел бы, чтобы он выглядел примерно так ...

CreateNextIn('(')
CreateNextIn('[')
CreateNextIn('{')

, который создаст для меня omap.

Любая помощь будет принята с благодарностью :D

1 Ответ

4 голосов
/ 11 июля 2020

Да, можно. Должно получиться примерно так:

function! CreateNextIn(foo) abort
  execute 'onoremap <buffer> in'.a:foo.' :<c-u>execute "normal! /[\r:noh\rvi'.a:foo.'"<cr>'
endfunction
...