如何在vi/Vim中多行选择的开头插入文本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (10)
  • 关注 (0)
  • 查看 (265)

Vim,如何在所选内容中的每一行开头插入字符?

例如,假设我想在每一行的开头加上‘//’来注释一个代码块(假设我的语言的注释系统不允许像//这样的块注释)**我该怎么做?

提问于
用户回答回答于
  • 按ESC输入“command mode”
  • 使用Ctrl+V进入可视块模式
  • 向上移动/向下移动,以选择要注释的行中的文本列。
  • 然后按Shift+i并键入要插入的文本。
  • 然后点击ESC,等待1秒,插入的文本将出现在每一行。
用户回答回答于

把这个放到你的视频里:

let maplocalleader=','
vmap <silent> <LocalLeader>c <Plug>VisualTraditional
nmap <silent> <LocalLeader>c <Plug>Traditional
let g:EnhCommentifyBindInInsert = 'No'
let g:EnhCommentifyMultiPartBlocks = 'Yes'
let g:EnhCommentifyPretty = 'Yes'
let g:EnhCommentifyRespectIndent = 'Yes'
let g:EnhCommentifyUseBlockIndent = 'Yes'

然后你可以用‘,c’注释/取消注释(选定的)行。

用户回答回答于

选择一些文本:

Shift-V
...select the lines of text you want to comment....

评论:

,cc

取消评论:

,cu

或者只需切换行或块的注释状态:

,c<space>
用户回答回答于

还有另一种方式:

:'<,'>g/^/norm I//

/^/只是一个匹配每一行的假图案。norm允许你运行下面的正常模式命令。I//在将光标跳到行首时,输入插入模式,然后插入以下文本(两个斜杠)。

:g在多行上执行复杂的操作通常很方便,你可能希望在多个模式之间跳转、删除或添加行、移动光标、运行一堆宏等等。而且,你可以告诉它只在与模式匹配的行上操作。

用户回答回答于

如果你想让它变得超级花哨,把这个放进你的 .vimrc:

vmap \c :s!^!//!<CR>
vmap \u :s!^//!!<CR>

然后,无论何时在视觉模式下,你都可以点击\c省去那块\uU型我来看看。当然,你可以将这些快捷击键更改为任何东西。

用户回答回答于

这增加了#在每一行的开头:

:%s/^/#/

人们会停止抱怨你缺乏恰当的注释脚本。

用户回答回答于

还有另一种方式:

  • 移到行的开头
  • 进入可视块模式(CTRL-v)
  • 选择想要的线条(用j/k向上/向下移动,或跳转到线(G)
  • 新闻I(那是资本I)
  • 键入注释字符
  • 按ESC
用户回答回答于

对于新来者来说,另一种可能更容易的方式是:

 some█
 code
 here

将光标放在第一行,例如

*1人进入

并键入以下内容进入插入模式并添加文本:

I//空间

 // █some
 code
 here

按ESC返回命令模式并使用有向图:

J.。J.

 // some
 // code
 //█here

J是一个运动命令,向下一行,然后。重复你所做的最后一个编辑命令。

用户回答回答于

搜索和替换的一般模式是:

:s/search/replace/

将“搜索”的第一次出现替换为当前行的“替换”。

:s/search/replace/g

用当前行的“替换”替换所有的“搜索”,“g”是“global”的缩写

此命令将只将当前行的“搜索”替换为“替换”。%用于搜索整个文件。为了确认每一个替换,以交互方式添加一个“c”以进行确认:

:%s/search/replace/c

交互式确认将整个文件的“搜索”替换为“替换”

你可以使用行号范围来代替%字符(请注意,“^”字符是行首的特殊搜索字符):

:14,20s/^/#/

在第14-20行开头插入一个“#”字符

如果要使用另一个注释字符(如//),则更改命令分隔符:

:14,20s!^!//!

在第14-20行的开头插入“//”字符序列

或者,你可以一直转义//字符,例如:

:14,20s/^/\/\//

在第14-20行的开头插入“//”字符序列

如果在编辑器中看不到行号,只需键入以下内容

:set nu
用户回答回答于

这取代了每一行加上“//”:

:%s!^!//!

这取代了每一行(使用可视模式选择)与“//”:

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

gv(在正常模式下)恢复最后的视觉选择,这有时会很方便。

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问4 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券