如何在 vi 编辑器中删除选定的文本

Posted

技术标签:

【中文标题】如何在 vi 编辑器中删除选定的文本【英文标题】:How to delete selected text in the vi editor 【发布时间】:2011-03-08 02:16:21 【问题描述】:

我正在使用 PuTTY 和 vi 编辑器。如果我用鼠标选择了 5 行,我想删除这些行,我该怎么做?

另外,如何使用键盘选择行,就像在 Windows 中按 Shift 并移动箭头来选择文本一样?我如何在 vi 中做到这一点?

【问题讨论】:

我有打印的人列表,但找不到如何删除选定的文本 x 删除光标右侧的字符 X 删除光标左侧的字符 D 删除到行尾 dd 删除当前行 :d 从lagmonster.org/docs/vi.html 删除当前行 希望对您有所帮助 关于超级用户的 VIM 问题?大声笑! @Pascal:嗯,是的,你是对的。顺便说一句,格式很好的答案。哦,他/她的问题不是关于 VIM,而是关于 VI。 ;) 【参考方案1】:

如果要使用行号删除,可以使用:

:startingline, last line d

例子:

:7,20 d

此示例将删除第 7 到 20 行。

【讨论】:

到目前为止我还没有意识到这个提示。它就像一个魅力!谢谢!【参考方案2】:

当使用像PuTTY 这样的终端时,鼠标点击和选择通常不会传输到远程系统。因此,vi 不知道您刚刚选择了一些文本。 (这也有例外,但通常不会传输鼠标操作。)

要删除 vi 中的多行,请使用 5dd 之类的内容删除 5 行。

如果您不使用 Vim,我会强烈建议您这样做。您可以使用视觉选择,按 V 开始视觉块,将光标移动到另一端,然后按 d 删除(或任何其他编辑命令,如 y 复制)。

【讨论】:

@Justin L.:使用<kbd>a</kbd> 谢谢! :D 是否还有更多这些隐藏在某个地方? Putty 能够传输鼠标命令;第一句话可能已经过时了。【参考方案3】:

我正在使用 PuTTY 和 vi 编辑器。如果我用鼠标选择了 5 行,我想删除这些行,我该怎么做?

忘记鼠标。要删除 5 行,可以:

到第一行输入d5ddd删除一行,d5d删除5行)~or~ 键入 Shift-v 进入行选择模式,然后使用 j 向下移动光标(是的,使用 h、jkl移动向左向下upright,这比使用箭头更有效)并键入 d 删除选择。

另外,如何使用键盘选择行,就像在 Windows 中按 Shift 并移动箭头以选择文本一样?我如何在 vi 中做到这一点?

正如我所说,要么使用 Shift-v 进入逐行选择模式,要么使用 v 进入逐字符选择模式,或者使用 Ctrl-v 进入进入分块选择模式。然后用 hjkl 移动。

我建议花一些时间与 Vim Tutor (run vimtutor) 一起以非常具有指导意义的方式熟悉 Vim。

另见

What is your most productive shortcut with Vim? 的这个答案(我最喜欢的 SO 答案之一)。 Efficient Editing With vim

【讨论】:

实际上,如果你的终端支持vim,它对鼠标的支持非常好。例如在控制台中使用gpm 守护进程,或者在图形环境中运行xtermkonsole,您可以告诉vim set mouse=a(或将其添加到您的.vimrc 中)并且可以使用鼠标进行选择, 调整拆分大小等。 @Ben 你说得对,我根本不使用鼠标,但这并不意味着 VIM 不能处理它(在某些情况下)。当你打字时,我实际上是从我的答案中删除了这个不准确的部分。 另外,很难判断你的 V 何时是大写字母...我建议使用 [Shift] + [V] 来选择行模式。 我知道已经有一段时间了,但为什么使用hjkl 会比使用箭头更有效?使用箭头我认为没有问题,最终结果看起来相同。此外,箭头最初是为此目的而设计的,因此它们的排列感觉更加直观(至少对我而言) @FredericoPantuzza 那时是手臂运动的问题 - 目标是始终将您的手指放在主行键上。随着时间的推移,必须拿起你的右臂并将其滑到箭头键上才能使用它们。【参考方案4】:

按照 vi 的方式进行。

要删除 5 行,请按:5dd(5 删除)

要选择(实际上是将它们复制到剪贴板),请键入:10yy

有点难掌握,但是在使用这些远程终端时非常方便学习

注意一些编辑器的学习曲线:

(来源:calver at unix.rulez.org)

【讨论】:

【参考方案5】:

如果要从当前行号中删除文件中的所有行,请使用dG,它将删除所有行(shift g) 表示文件结尾

【讨论】:

【参考方案6】:

使用鼠标突出显示仅突出显示终端上的字符。 VI 并没有真正得到这些信息,所以你必须以不同的方式突出显示。

按“v”进入选择模式,然后使用箭头键移动它。要删除,请按 x。 要一次选择行,请按 shift+v。 要选择块,请尝试 ctrl+v。这对于在代码前面插入大量注释行很有好处:)。

我对 VI 没问题,但我花了一段时间来改进。我的同事推荐我this cheat sheet。当我忘记某些东西时,我会在墙上打印出那些奇怪的时刻。

黑客愉快!

【讨论】:

以上是关于如何在 vi 编辑器中删除选定的文本的主要内容,如果未能解决你的问题,请参考以下文章

在vi编辑器中的命令模式下,键入( )可在光标当前所在行下添加一新行

如何在linux中的vi编辑模式下删除一大块内容

如何在linux中vi使用方法

vi文本编辑器有哪三大工作模式,时如何进行转化的?

vi编辑器的命令详情

在 vi 编辑器中从当前光标位置删除到给定的行号