В .vimrc, функция, когда курсор между скобками / скобками и ввод нажаты - PullRequest
1 голос
/ 27 сентября 2019

Вопрос вроде описывает, что я пытаюсь сделать.Прямо сейчас я использую

inoremap { {}<Left>

, чтобы поместить курсор в скобки.Следующее, чего я пытаюсь добиться, это если курсор находится между нажатием и вводом, результат должен быть:

{ | <-cursor }

Похоже, что это должно быть просто, но после некоторогоПогуглив, я не смог найти решение.(все еще очень новичок в скриптах vim)

Ответы [ 3 ]

3 голосов
/ 27 сентября 2019

То, что у меня есть в lh-скобках , можно суммировать как

inoremap <expr> <cr> getline(".")[col(".")-2:col(".")-1]=="{}" ? "<cr><esc>O" : "<cr>" 

(но на самом деле это немного сложнее, так как могут быть добавлены другие условия)

2 голосов
/ 27 сентября 2019

Ненавижу отвечать на свой вопрос, но, наконец, понял:

inoremap <expr> <CR> pumvisible() ? "\<CR>" : "\<Esc>:call Checkcursor()\<CR>"
function! Checkcursor()
  let b:letters = strcharpart(getline('.')[col('.') - 1:], 0, 2)
  if b:letters == '{}'
    call feedkeys("li\<CR>\<Esc>\ko", "n")
  else
    call feedkeys('o')
  endif
endfunction
1 голос
/ 27 сентября 2019

Вы можете записать макрос ...

qai{<cr><cr>}<esc>ki<tab><esc>q

@a

Чтобы оставить макрос в режиме вставки, вы можете добавить к макросу

ii<esc>y"A$

Вы также можете попробовать что-то вроде ultisnips .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...