在vim中,我经常发现自己删除(或复制)大块文本.可以计算文本行并说(例如)50dd删除50行.
但是如何删除这一大块文本而不必知道要删除多少行呢?
pax*_*blo 289
转到起始行并键入ma(标记为"a").然后转到最后一行并输入d'a(删除以标记"a").
这将删除当前到标记的所有行(包括).它也兼容,vi以及vim你的环境不被后者祝福的可能性.
Mat*_*Mat 283
我不是vim guru,但我在这种情况下使用的是"视觉模式".在命令模式下,键入V(capital).然后向上/向下移动以突出显示要删除的块(所有常用的移动命令都有效).然后用x或删除它d.
M'v*_*'vy 45
您可以使用可视化模式也(一些命令与删除选项也可用)
vip vap选择段落,v2ap选择两段
dap工作,d2ap也.您可以在[ ]类似的块内删除da[
供参考:对象的类型.从vim文档:第4节.http://vimdoc.sourceforge.net/htmldoc/visual.html
4. Operating on the Visual area *visual-operators*
...
The objects that can be used are:
aw a word (with white space)
iw inner word
aW a WORD (with white space)
iW inner WORD
as a sentence (with white space)
is inner sentence
ap a paragraph (with white space)
ip inner paragraph
ab a () block (with parenthesis)
ib inner () block
aB a {} block (with braces)
iB inner {} block
a< a <> block (with <>)
i< inner <> block
a[ a [] block (with [])
i[ inner [] block
Run Code Online (Sandbox Code Playgroud)
dav*_*les 38
这里有很多更好的答案,但为了完整起见,我会在阅读上面提到的一些很好的答案之前提到我以前使用过的方法.
假设您要从第24-39行删除.您可以使用ex命令
:24,39d
Run Code Online (Sandbox Code Playgroud)
你也可以使用
:24,39y
Run Code Online (Sandbox Code Playgroud)
然后使用,找到并替换24-39行
:24,39s/find/replace/g
Run Code Online (Sandbox Code Playgroud)
计算行数对我来说太乏味了,但计算“段落”也不错。'{' 和 '}' 分别将光标移动到光标之前和之后的第一个空行。光标移动操作可以与删除结合起来,其他几个答案也使用了类似的方法(dd表示一行,dG表示文档末尾等)
例如:
/* Lorem ipsum dolor sit amet, consectetur adipiscing elit. */
Lorem *ipsum(void) {
return dolor(sit, amet);
}
Run Code Online (Sandbox Code Playgroud)
如果光标从注释块上方开始,则“d}”将删除注释块,“d2}”将删除注释块和代码块。如果光标从代码块下方开始,“d{”将删除该代码,而“d2{”将同时删除两者。当然,您可以通过先移动光标来跳过一个块:“{d{”或“}d}”。
如果您与空白保持一致,或者您可以一眼数出段落数,那么这应该可行。如果您有兴趣,Vim 帮助文件有更多光标技巧。