有没有更好的方法在Vim中创建某个角色的行?
可能重复:有没有更好的方法在Vim中创建某个角色的行?,vim,replace,Vim,Replace,可能重复: 编辑 原来这个问题是一个完全重复的-但其中一个没有这么好的标题 编辑标记样式文件时,我喜欢 Some heading ------------ Notice the line matches the length of the heading? 目前我有: yyp:s/./-/g 但我想知道是否有更好的方法(减少击键次数)来实现这一点?正如我刚刚发现的那样,您可以用更少的按键来实现这一点: yypVr--7,如果您包括shift键。正如我刚刚发现的,您可以用较少的按键笔划来
编辑 原来这个问题是一个完全重复的-但其中一个没有这么好的标题
编辑标记样式文件时,我喜欢
Some heading
------------
Notice the line matches the length of the heading?
目前我有:
yyp:s/./-/g
但我想知道是否有更好的方法(减少击键次数)来实现这一点?正如我刚刚发现的那样,您可以用更少的按键来实现这一点:
yypVr-
-7,如果您包括shift键。正如我刚刚发现的,您可以用较少的按键笔划来完成:
yypVr-
-7,如果包括shift键。我不是Vim专家,但在任何文本编辑器中创建和使用宏都可以帮助我减少击键次数
在正常模式下,将光标放在要加下划线的行上,开始将宏录制到缓冲区(本例中为a)
qa
现在,执行上述命令。在本例中,我在一系列“-”字符后插入了一行新行。在离开插入模式之前,再次点击q完成
yyp:s/./-/gA<enter><esc>q
yyp:s/-/gAq
要在可能有的标题下加下划线,请在正常模式下,光标位于该行上,然后键入:
@a<enter>
@a
击键
之前:18
之后:3
节省:15
AFAIK缓冲区可以分配到“a”到“z”
Happy Vimming我不是Vim专家,但在任何文本编辑器中,创建和使用宏都可以帮助我减少击键次数 在正常模式下,将光标放在要加下划线的行上,开始将宏录制到缓冲区(本例中为a)
qa
现在,执行上述命令。在本例中,我在一系列“-”字符后插入了一行新行。在离开插入模式之前,再次点击q完成
yyp:s/./-/gA<enter><esc>q
yyp:s/-/gAq
要在可能有的标题下加下划线,请在正常模式下,光标位于该行上,然后键入:
@a<enter>
@a
击键
之前:18
之后:3
节省:15
AFAIK缓冲区可以分配到“a”到“z”
Happy Vimming我在我的
~/.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
“”“CreateHeaderLine
“轻松创建标题映射
“下面这行就是一个例子
" ================================
“助记符ch:创建标题”
nnoremap ch:调用CreateHeaderLine('ch','
nnoremap cH:调用CreateHeaderLine('cH','-'))
功能!CreateHeaderLine(映射、地址)
设c=nr2char(getchar())
exe't'。a:地址
exe“norm!v$r”。C
安静!调用repeat#set(a:mapping.c)
端功能
我已将以下代码添加到我的~/.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
“”“CreateHeaderLine
“轻松创建标题映射
“下面这行就是一个例子
" ================================
“助记符ch:创建标题”
nnoremap ch:调用CreateHeaderLine('ch','
nnoremap cH:调用CreateHeaderLine('cH','-'))
功能!CreateHeaderLine(映射、地址)
设c=nr2char(getchar())
exe't'。a:地址
exe“norm!v$r”。C
安静!调用repeat#set(a:mapping.c)
端功能
与往常一样,在vim
中,您可以映射命令。但是,也许您可以将此操作的含义传达给您的用例,以找到一个更通用的解决方案(我不明白您为什么要用-
替换点)@user1146332我相信
是与行中任何单个字符匹配的正则表达式(并用-
替换它)。/g
在整行中都这样做(而不是第一次出现)。@Jeff Bridgman已经晚了,我在标记源代码中没有看到提示,谢谢你的评论。考虑到这一点,我将通过自动命令进行特定于标记的映射。yypv$r-
可以工作,而且按键次数稍微少一些。我猜yypVr-
的字符数较少,不过您必须按shift键才能到达。与往常一样,在vim
中,您可以映射命令。但是,也许您可以将此操作的含义传达给您的用例,以找到一个更通用的解决方案(我不明白您为什么要用-
替换点)@user1146332我相信
是与行中任何单个字符匹配的正则表达式(并用-
替换它)。/g
在整行中都这样做(而不是第一次出现)。@Jeff Bridgman已经晚了,我在标记源代码中没有看到提示,谢谢你的评论。考虑到这一点,我将通过自动命令进行特定于标记的映射。yypv$r-
可以工作,而且按键次数稍微少一些。我想yypVr-
是更少的字符,尽管你必须按shift键才能到达那里。是的,这就是我的映射。是的,这就是我的映射。