有没有更好的方法在Vim中创建一些角色?

时间:2013-01-25 19:04:51

标签: vim replace

  

可能重复:
  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

但是我想知道是否有更好的(更少的击键)方式来做到这一点?

3 个答案:

答案 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