【发布时间】:2017-03-11 14:54:32
【问题描述】:
我想要一个 vi 命令,它将光标位置替换为给定标记。例如以
开头 word blah blah =(
如果我将光标定位在word 之后的空格处,我希望能够将光标和等号之间的所有内容替换为 #,
获得
word#(
我确定如果我能理解this thread,我可以弄明白,但那个线程比我需要的要复杂得多。
【问题讨论】:
我想要一个 vi 命令,它将光标位置替换为给定标记。例如以
开头 word blah blah =(
如果我将光标定位在word 之后的空格处,我希望能够将光标和等号之间的所有内容替换为 #,
获得
word#(
我确定如果我能理解this thread,我可以弄明白,但那个线程比我需要的要复杂得多。
【问题讨论】:
尝试以下方法:
cf=#<esc>
c 命令是“更改”,它会删除文本并将您置于插入模式。就像其他操作员一样,它需要一个动作。 f= 是一种将光标跳转到下一个出现“=”的动作。这适用于任何其他字符,例如,fa 将跳转到下一个“a”,fb 将跳转到下一个“b”等。之后,您将进入插入模式,并且可以输入#。然后只需点击<esc> 即可返回正常模式。
您可以使用/foo 而不是f= 来使用更高级的“令牌”来做同样的事情。例如,如果您想更改直到下一次出现 =( 而不是下一次出现 =,您可以这样做
c/=(<cr>#<esc>
【讨论】:
f/F 和 t/T 仅适用于当前行。要跨多行执行此操作,您需要使用搜索 (/)。
除非光标和所需的= 之间有其他= 字符,否则您可以使用cf=#<Esc>。
cf= 从光标删除直到第一个=(包括),并将您置于插入模式。
【讨论】: