25

在像 Eclipse 这样的 IDE 中选择大量跨越多个屏幕的文本相当容易,因为您可以使用鼠标,但是选择和删除多屏幕文本块或将三个大型方法写入另一个的最佳方法是什么文件,然后在无法使用鼠标的情况下通过 putty/ssh 使用 Vim 时将其删除以进行测试?

我可以轻松地拖到行尾或拖到代码块的末尾,但是如果文本延伸到许多屏幕上,或者里面有很多空行,我觉得我的双手被 Vim 捆绑。有什么解决办法吗?

还有一个相关的问题:有没有办法以某种方式选择 40 行,然后将它们全部注释掉(使用“#”或“//”),这在大多数 IDE 中很常见?

4

16 回答 16

24

好吧,首先,您可以设置vim为使用鼠标,这将允许您像在Eclipse.

您也可以使用 Visual selection - v,默认情况下。选择后,您可以yank,cut等。

至于注释掉块,我通常用 选择它VISUAL,然后做

:'<,'>s/^/# /

将每行的开头替换为#. ('<'>标记是视觉选择的开始和和。

于 2008-09-12T10:02:39.373 回答
19

使用标记。

转到要删除的文本块的顶部并输入

ma

在那条线上的任何地方。不需要结肠。

然后转到块的末尾并输入以下内容:

:'a,.d

Entering为光标下的字符ma设置了标记。a

移动到文本块底部后输入的命令显示“从包含标记a( 'a) 描述的字符的行到当前行 ( .) delete。”

这种东西也可以用于其他事情。

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

NB 'a(撇号-a)是指包含由 标记的字符的行a。`一个(backtick-a) refers to the character marked by`。

于 2008-09-12T10:18:04.717 回答
17

CTRL要插入注释,请使用-选择行的开头字符v(按块视觉,而不是“v”字符逐行视觉或“V”逐行视觉)。然后使用“I”进入插入模式,在第一行输入您的注释字符(例如“#”),最后使用“Esc”进入正常模式。瞧!

要删除评论,请使用 blockwise-visual 选择评论并使用“ x”删除它们。

于 2008-09-12T11:29:26.357 回答
8

使用可视块命令 v (或 V 用于整行和C-V用于矩形块)。在视觉块模式下,您可以使用任何运动命令,包括搜索;我经常使用 } 跳到下一个空白行。标记块后,您可以将其 :w 写入文件、删除、拉动或其他任何方式。如果您执行命令并且视觉块消失,请使用 gv 重新选择相同的块。有关更多信息,请参阅 :help visual-change。

我认为 vim 附带了一些特定于语言的脚本,这些脚本可以以适合您选择的语言的方式执行诸如注释代码块之类的操作。

于 2008-09-12T10:01:05.180 回答
4

V(大写 V)然后按40j选择 40 行,然后按d删除它们。或者正如@zigdon 回复的那样,您可以将它们注释掉。

于 2008-09-12T10:05:37.557 回答
4

视觉模式是您主要问题的解决方案。至于注释掉代码段,vim.org上有很多插件,我现在用的是tComment.vim。

还有一种巧妙的方法可以在没有插件的情况下注释掉一个块。假设您在 python 中工作,# 是注释字符。对您希望井号所在的列进行可视化块选择,然后键入 I#ESCAPE。要进入可视块模式,请在 windows 上按 Cq 或在 linux 上按 Cv。

于 2008-09-12T10:12:16.183 回答
4

我的块评论技术:

Ctrl+V 开始分块视觉模式。

做出你的选择。

在选择仍处于活动状态时,Shift+ I。这使您进入列插入模式。

键入您的注释字符“#”或“//”或其他任何内容。

ESC键。

于 2008-09-12T12:57:01.997 回答
3

或者你可能想试试这个脚本......

http://www.vim.org/scripts/script.php?script_id=23

于 2008-09-12T11:06:05.227 回答
3

对于注释行,我建议使用以下插件之一:

增强评论

书呆子评论者

这些天我发现自己更多地使用 NERD,但我已经使用 EnhancedCommentify 多年了。

于 2009-02-20T18:08:39.580 回答
2

使用Shift+V进入可视模式,然后您可以选择行并删除/更改它们。

于 2008-09-12T10:01:37.533 回答
2

如果您想对一系列行执行操作,并且您知道行号,则可以将该范围放在命令行上。例如,要删除第 20 到 200 行,您可以执行以下操作:

:20,200d

要将第 20 行到 200 行移动到第 300 行所在的位置,您可以使用:

:20,200m300

等等。

于 2009-02-18T09:26:23.110 回答
1

我通常注释掉 40 行的方法是将光标放在第一行并输入命令:

:.,+40s/^/# /

(这里向前 40 行,用散列、空格替换行首)似乎比其他一些建议的方法长一点,但我喜欢用键盘而不是鼠标来做事。

于 2008-09-15T18:38:41.043 回答
1

您应该知道正常模式命令 [count] CTRL- D。它可以选择将 'scroll' 选项从 10 更改为 [count],然后向下滚动那么多行。再次按CTRL-D将再次向下滚动相同的行。

所以尝试输入

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

CTRL-U 的工作方式相同,但向上滚动。

于 2008-11-08T15:40:36.330 回答
1

第一个答案目前不太正确?要注释掉选择,请按 ':' 并输入命令 :'<,'>s/^/# /g

('<, '> - 会自动出现)

于 2010-06-09T16:27:47.317 回答
0

v 进入可视块模式,您可以在其中像在大多数常用编辑器中使用 shift 一样进行选择,稍后您可以使用普通命令执行通常可以执行的任何操作(替换 :'<,'>s/^/#/ 以添加注释, 例如) 其中 '<,'> 表示选定的视觉块而不是所有文本。

于 2008-09-12T10:03:43.630 回答
0

标记将是您想要开始的最简单的mb ,而是您想要结束的地方,一旦完成,您几乎可以做任何您想做的事情

:'b,'ed

从标记b删除到标记e

在可视模式下注释掉 40 行

V40j:s/^/#/

将从你开始序列的地方注释掉 40 行

于 2008-09-15T18:46:40.307 回答