我想在行的开头跟一个空格插入x个字符#。我的目标是轻松地为标记放置标题:
在:
Title
输入5 + F5后
##### Title
我刚设法插入带有F5键的#:nnoremap <F5> @='I#<C-V><Esc>'<CR>h
非常感谢!
答案 0 :(得分:0)
在我看来,如果你使用vimscript而不是编辑命令,这个会更清楚一些。以下映射的工作方式如下:
映射:
nmap <F5> :<C-u>call setline('.', substitute(getline('.'), '^', repeat('#', v:count1) . ' ', ''))<Enter>
在回复下面的评论时,这里有一个版本,它会修改当前行,使其具有正好<count>
个哈希后跟一个空格 - 即使它已经有哈希值和空格。如果<count>
为零,则会删除哈希值和空格。
nmap <F5> :<C-u>call setline('.', substitute(getline('.'), '\v^(#+ )?', repeat('#', v:count) . repeat(' ', min([1, v:count])), ''))<Enter>
因为这对于单行地图来说真的很忙,所以这里改为使用函数:
function SetMarkdownHeader()
let current_line = getline('.')
let hashes = repeat('#', v:count)
let maybe_space = repeat(' ', min([v:count, 1]))
let new_line = substitute(current_line, '\v^(#+ )?', hashes . maybe_space, '')
call setline('.', new_line)
endfunction
nmap <f5> :<C-u>call SetMarkdownHeader()<Enter>