La question décrit en quelque sorte ce que j'essaie de faire. J'utilise actuellement
inoremap {{}
Pour placer le curseur entre les crochets. La prochaine chose que j'essaie d'obtenir est que si le curseur est entre et que vous appuyez sur Entrée, le résultat devrait être:
{
| <-curseur
}
On dirait que ça devrait être simple, mais après quelques recherches sur Google, je n'ai pas trouvé de solution. (encore très novice en scripts vim)
3 Réponses :
Vous pouvez enregistrer une macro ...
ii<esc>y"A$
Pour laisser la macro en mode insertion, vous pouvez l'ajouter à la macro
qai{<cr><cr>}<esc>ki<tab><esc>q
@a
Vous pouvez également essayer quelque chose comme ultisnips .
Merci pour la suggestion. Je ne suis pas très familier avec les macros et leur enregistrement, donc j'essaye de m'en tenir au fichier .vimrc. En ce moment, j'utilise inoremap pour déclencher le résultat souhaité chaque fois que j'en ai besoin.
Une autre façon de faire est d'utiliser une carte normale: nnoremap . Ultisnips est cependant votre meilleur pari.
Je déteste répondre à ma propre question, mais j'ai finalement compris:
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
Ce que j'ai dans lh-brackets pourrait être résumé comme
inoremap <expr> <cr> getline(".")[col(".")-2:col(".")-1]=="{}" ? "<cr><esc>O" : "<cr>"
Beau et fait exactement quand j'avais besoin ... ET n'interfère pas avec omni-complet!