Answers:
有关更多信息和阅读,请在Vim Tips Wiki中查看“ 多行插入文本 ”。
Shift + v
不CTRL + v
。@ vkaul11也许同样的事情,你做了什么洛尔
这将每行的开头替换为“ //”:
:%s!^!//!
这将用“ //” 替换每个选定行的开头(使用可视模式进行选择):
:'<,'>s!^!//!
注意的是gv
(正常模式)恢复上次视觉选择,这个就派上用场了,不时。
/
,必须逃脱//
in :s/^/\/\/
而不是写作:s!^!//
)
搜索和替换的一般模式是:
:s/search/replace/
将当前行的第一次出现的“搜索”替换为“替换”
:s/search/replace/g
将当前行中所有出现的“搜索”替换为“替换”,“ g”是“全局”的缩写
此命令仅将当前行的每次出现的“搜索”替换为“替换”。%用于搜索整个文件。要以交互方式确认每个替换,请在后面附加一个“ c”以进行确认:
:%s/search/replace/c
交互式确认将整个文件的“搜索”替换为“替换”
您可以使用行号范围来代替%字符(请注意,'^'字符是行首的特殊搜索字符):
:14,20s/^/#/
在第14-20行的开头插入“#”字符
如果要使用其他注释字符(例如//),请更改命令定界符:
:14,20s!^!//!
在第14-20行的开头插入“ //”字符序列
或者,您总是可以转义//字符,例如:
:14,20s/^/\/\//
在第14-20行的开头插入“ //”字符序列
如果在编辑器中看不到行号,只需键入以下内容
:set nu
#
该行中的其他内容。您应该^#
改用。
对于新来者来说,另一种可能更容易的方法是:
some█
code
here
将光标放在第一行,例如
gg
并输入以下内容进入插入模式并添加文本:
I / / Space
// █some
code
here
按Esc返回命令模式并使用有向图:
j . j .
// some
// code
//█here
j是向下移动一行的运动命令,并.重复您上次执行的编辑命令。
|
而不是大写字母I
。我以为是一|
开始。
另一种方式:
:'<,'>g/^/norm I//
/^/
只是匹配每行的虚拟模式。 norm
使您可以运行随后的普通模式命令。 I//
表示在将光标跳到该行的开头时进入插入模式,然后插入以下文本(两个斜杠)。
:g
对于在多行上执行复杂的操作通常很方便,您可能需要在多个模式之间跳转,删除或添加行,在光标周围移动,运行一堆宏等。并且您可以告诉它仅在以下行上运行:匹配模式。
对于注释代码块,我喜欢NERD Commenter插件。
选择一些文本:
Shift-V
...select the lines of text you want to comment....
评论:
,cc
取消注释:
,cu
或者只是切换行或块的注释状态:
,c<space>
我可以推荐EnhCommentify插件。
例如。将此放入您的vimrc:
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'注释/取消注释(选定的)行