首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >vi/vim中的s、c和r命令有什么区别?

vi/vim中的s、c和r命令有什么区别?
EN

Stack Overflow用户
提问于 2013-05-07 18:28:19
回答 4查看 33.8K关注 0票数 54

我试图从关于Vim的OReilly一书中澄清这一点,但所提供的示例不够清楚。通过示例/用例而不是直接解释来澄清将是非常有帮助的。

示例文本可以是:

代码语言:javascript
运行
复制
With a
screen editor,
you can
scroll the page, move the cursor.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-07 18:39:32

假设文档中有foo,并且光标在f上。

现在,按rb会将其更改为boo,您将返回到命令模式。按sb键也可以完成同样的操作,但您处于插入模式,可以插入更多字符。最后,c需要某种形式的动作;例如,您可以输入cw来删除整个单词并进入插入模式。另一方面,cl本质上与s相同。

票数 97
EN

Stack Overflow用户

发布于 2013-05-08 03:55:10

代码语言:javascript
运行
复制
:help c
:help s
:help r

很简单。

与其在这本书上浪费时间,不如学习如何使用Vim令人敬畏的内部文档:

代码语言:javascript
运行
复制
:h s
:h :command
:h 'option'
:h function()
:h ctrl-x
:h i_ctrl-x
:h subject
:h foo<Tab>
:helpgrep foo
票数 25
EN

Stack Overflow用户

发布于 2018-08-14 14:43:36

描述

s (替换)将删除当前字符,并将用户置于插入模式,同时将光标置于两个周围字符之间。例如,3s将删除接下来的三个字符,并将用户置于插入模式。

c (change)采用vi/vim运动(如wjb等)。它删除从当前光标位置到移动结束为止的字符。请注意,这意味着s等同于cl (vim文档本身声称它们是同义词)。

r (replace)根本不会进入插入模式。相反,它需要另一个字符,然后使用该字符替换当前光标下的字符。

示例

获取示例文本,并将光标显示在单词“can”的开头(第3行)。

在vi/vim中键入spl<Esc>

这里,我们有用于替代的spl是要插入的文本,<Esc>将退出插入模式。综合起来,它会将can更改为plan,如下所示:

代码语言:javascript
运行
复制
With a
screen editor,
you plan
scroll the page, move the cursor.

在vi/vim中键入cwcould<Esc>

c代表change,w通过下一个单词can告诉c删除。接下来,我们键入插入模式的文本could。最后,我们需要再次输入<Esc>以退出插入模式。该命令会将can更改为could,如下所示:

代码语言:javascript
运行
复制
With a
screen editor,
you could
scroll the page, move the cursor.

在vi/vim中键入rf

在这里,我们键入r表示replace,然后键入f作为r用来替换原始字符的新字符。这会将can更改为fan,如下所示:

代码语言:javascript
运行
复制
With a
screen editor,
you fan
scroll the page, move the cursor.

备注

vi/vim中的简单命令有很多隐藏的用法,这些用法突出了这些命令之间的更多差异。因为我几乎总是使用vim而不是vi,所以这些特性可能是vim独有的,我不确定。

要最大限度地利用cyd等采取动作的命令,需要很好地掌握文本对象(在vim中键入help text-objects。这些都不在vi中。)

因为r接受一个字符,而不是进入插入模式,所以您可以输入原本难以添加的字符。输入ctrl(即r,然后输入r<C-R> -r)将当前字符替换为ctrl-r字符。这可能令人惊讶,因为在插入模式下按ctrl-r会等待另一个要粘贴的键,即寄存器。

这三个命令都可以使用.命令重复执行,用给定的文本替换、更改或替换与光标相关的相同区域。

在命令前键入数字n时,sc会删除n项目(字符表示s,移动表示c),然后插入一次文本。但是,如果在r之前使用数字n,则会用所选字符的相同数量的副本替换下一个n字符。例如,4r0可以一次性将1234替换为0000

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16416758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档