可能重复:
How can I a put a line like “==========” quickly in vim
原来这个问题与How can I a put a line like "==========" quickly in vim完全相同 - 但是那个问题没有这么好的标题......
编辑markdown样式文件时,我喜欢
Some heading
------------
Notice the line matches the length of the heading?
目前我这样做:
yyp:s/./-/g
但是我想知道是否有更好的(更少的击键)方式来做到这一点?
答案 0 :(得分:3)
正如我刚刚发现的那样,你可以用一些不那么重要的笔触来做到这一点:
yypVr-
- 7,如果包含shift键。
答案 1 :(得分:2)
我不是Vim专家,但在任何文本编辑器中创建和使用宏都可以帮助我减少击键次数。
在正常模式下,将光标放在要加下划线的行上,开始将宏录制到缓冲区(在本例中为a)
q a <enter>
现在,执行上述命令。在这种情况下,我已经完成了在一系列' - '字符之后插入一个新行。在再次点击q完成之前离开插入模式之前。
yyp:s/./-/gA<enter><esc>q
要为您可能拥有的任何标题加下划线,请将光标放在该行上,然后键入:
@a<enter>
的击键强>
之前:18
之后:3
节省: 15!
AFAIK缓冲区可以分配到'a'到'z'
快乐的Vimming
答案 2 :(得分:1)
我已将以下代码添加到~/.vimrc
以创建此类标头。我所做的只是在一行上执行ch=
,它将在下面创建一行填充=
的行。您也可以轻松地ch-
创建-
的标题行。
"""" CreateHeaderLine
" Easily create heading mapping
" The following line is an example
" ================================
" mnemonic ch: create header
nnoremap <silent> ch :call CreateHeaderLine('ch' ,'.')<cr>
nnoremap <silent> cH :call CreateHeaderLine('cH', '-')<cr>
function! CreateHeaderLine(mapping, address)
let c = nr2char(getchar())
exe 't ' . a:address
exe "norm! v$r" . c
silent! call repeat#set(a:mapping . c)
endfunction