как iab <CR>временно в gVim - PullRequest
       3

как iab <CR>временно в gVim

1 голос
/ 21 июня 2011

Я положил это в мой _vimrc

iab fi for(int i=0; i<; i++)<CR>{<CR>}<ESC>2kf<a

Расширение fi до for...loop

for(int i=0; i< █; i++)
{
}

После ввода 100, затем нажмите ENTER, я хочу открыть новую строку между {...}

for(int i=0; i< 100; i++)
{
    █
}

Есть ли способ сделать это? Спасибо!


Я использую саморазрушающееся отображение для <CR>, я думаю, что есть другой способ.

iab fi for(int i=0; i<; i++)<CR>{<CR>}<ESC>2kf<a<C-R>=EatSpace()<CR>

fun! EatSpace()
    let nr = getchar()
    call MapEnter()
    if nr==32
        return ''
    else
        return nr2char(nr)
    endif
endfun

fun! MapEnter()
    inoremap <CR> <ESC>:iunmap <C-V><CR><CR>jo
    return ''
endfun

1 Ответ

3 голосов
/ 21 июня 2011

Плагин snipmate vim как раз предоставляет эту функцию.

for<Tab> выдаст следующий код:

 for (i = 0; i < count; i++)
 {
    /* code */
 }

На следующем <TAB> нажатии вы перейдете на count, затем /* code */

Вы также можете легко настроить фрагменты кода, который хотите вставить.

Если вы не хотите использовать внешний плагин, вы все равно можете загрузить снипмат-код, чтобы посмотреть, как это делается.

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