【发布时间】:2011-07-28 13:39:40
【问题描述】:
我想知道是否可以在光标位置添加空格(30个空格)
我尝试使用正则表达式,但我不知道如何在正则表达式中表示实际光标位置。
【问题讨论】:
标签: regex vim space text-cursor
我想知道是否可以在光标位置添加空格(30个空格)
我尝试使用正则表达式,但我不知道如何在正则表达式中表示实际光标位置。
【问题讨论】:
标签: regex vim space text-cursor
30iSPACE会在命令模式下的光标位置添加30个空格。
【讨论】:
:nmap <F2> 30i<Space><Esc> 添加到您的.vimrc 文件中,然后在正常模式下按<F2> 键。
i,则新字符将插入第 32 个位置。说得通?现在,如果你想在光标之后插入,你需要“追加”所以使用a 而不是i。请记住,当光标是细条(插入模式)时,它不会位于两个字符之间——光标永远不会那样做——你只是看到它的左边部分。
"a 定义寄存器 a,如果你用 "ax 剪切一个空格,则寄存器 a 有空格。然后使用:
30"ap
注意:寄存器不会忘记它的价值,所以第一个解决方案更有用。
【讨论】:
除了已经给出的答案,我可以说光标位置在正则表达式中用\%# 表示,所以s/\%#/\=repeat(" ", 30)/ 将在光标位置添加30 个空格,就像30i<Space><Esc> 一样。
【讨论】:
30a<Space><Esc> 或 s/\%(\%#\%(.\|$\)\)\@<=/\=repeat(" ", 30)/。如果您不想移动光标,则必须用let winview=winsaveview() | ... | call winrestview(winview) 包围每个命令。