On fait un peu de nettoyage en mettant du code en commun, et on voit un mapping plus intéressant.

Voici ce que ça donne après un refactoring:

function s:build_big_title(char)
  let s:line_content = substitute(getline("."), '.', a:char, 'g')
  call append('.', s:line_content)
endfunction

function s:build_little_title(str)
  call setline(line('.'), a:str . getline('.'))
endfunction

function! quickmarkdown#title(level)
  if a:level == 1
    call s:build_big_title("=")
  elseif a:level == 2
    call s:build_big_title("-")
  elseif a:level == 3
    call s:build_little_title("### ")
  elseif a:level == 4
    call s:build_little_title("#### ")
  elseif a:level == 5
    call s:build_little_title("##### ")
  elseif a:level == 6
    call s:build_little_title("###### ")
  endif
endfunction
command! QuickMarkdownTitle1 call quickmarkdown#title(1)
command! QuickMarkdownTitle2 call quickmarkdown#title(2)
command! QuickMarkdownTitle3 call quickmarkdown#title(3)
command! QuickMarkdownTitle4 call quickmarkdown#title(4)
command! QuickMarkdownTitle5 call quickmarkdown#title(5)
command! QuickMarkdownTitle6 call quickmarkdown#title(6)

On n’a plus qu’un seule fonction quickmarkdown#title, à laquelle on passe en paramêtre le niveau du titre.

J’ai aussi changé le mapping. Tout d’abord j’utilise leader+q, au lieu de leader+m. Pourquoi, parce que je voulais m’en servir aussi en mode insertion avec la touche Control. Et en mode insertion, Control+m est équivalent à la touche Entrée, ce qui pose bien sûr quelques problèmes ;) Voici le mapping pour un clavier qwerty:

nmap <Leader>q1 :QuickMarkdownTitle1<Enter>
nmap <Leader>q2 :QuickMarkdownTitle2<Enter>
nmap <Leader>q3 :QuickMarkdownTitle3<Enter>
nmap <Leader>q4 :QuickMarkdownTitle4<Enter>
nmap <Leader>q5 :QuickMarkdownTitle5<Enter>
nmap <Leader>q6 :QuickMarkdownTitle6<Enter>
imap <C-q>1 <C-o>:QuickMarkdownTitle1<Enter>
imap <C-q>2 <C-o>:QuickMarkdownTitle2<Enter>
imap <C-q>3 <C-o>:QuickMarkdownTitle3<Enter>
imap <C-q>4 <C-o>:QuickMarkdownTitle4<Enter>
imap <C-q>5 <C-o>:QuickMarkdownTitle5<Enter>
imap <C-q>6 <C-o>:QuickMarkdownTitle6<Enter>

Au fait, vous pouvez trouver ce plugin sur Github.

À demain.