Хех, только сегодня я усилил собственную поддержку для этого (так как эти заголовки предписаны стандартом кодирования компании).
iabbrev //== // (96 equal characters)<Enter>//<Enter>// (96 equal characters)<C-O>k
iabbrev //-- // (96 dashes)<Enter>//<Enter>// (96 dashes)<C-O>k
Это позволяет мне набирать // ==, и когда я нажимаю пробел, все вводится, и я остаюсь с курсором "посередине", где я хочу.
Итак, для OP, если вы хотите использовать Ctrl-L, сделайте что-то вроде этого:
inoremap <C-L> /*****<Enter> * <Enter>*****<C-O>k
(хотя я сам люблю аббревиатуры ...)
Так как в нашем стандарте кодирования есть и другие моменты, в которых нам нужно расширить тире и равны столбцу 100, я подытожил это сегодня:
iabbrev <expr> === InsertTo99Width('===')
iabbrev <expr> --- InsertTo99Width('---')
function! InsertTo99Width(insertion)
let l:line = getline('.')
let l:linelen = strlen(l:line)
let l:col = col('.')
let l:numchars = (99 - col)
let l:inserted = a:insertion
if (l:linelen <= l:col) && (l:numchars > 0)
let l:numchars += len(l:inserted)
while len(l:inserted) < l:numchars
let l:inserted = l:inserted . l:inserted
endwhile
return l:inserted[0 : l:numchars]
else
return l:inserted
endif
endfunction
(Я вроде новичка в сценарии vim, так что может быть более простой способ сделать строку длиной N символов, но это позволяет повторять произвольные строки произвольной длины, так что если вам нравится dash-space-equal- пространство или что-то, это все равно будет выглядеть "красиво".)
В любом случае, наконец - вы можете использовать <expr>
и в inoremap, если хотите, так что вы можете сделать так, чтобы звёздочки переместились на заданную ширину на основе вывода функции. Там много силы, но для того, чтобы получить ее так, как вы хотите, может потребоваться немного усилий ...