VIM最有用的功能,这些功能在IDE中不是标准的[关闭]


30

我正在考虑是否应该重新使用VIM而不是IDE。VIM最有用的功能在IDE中不是标准的?


3
您使用哪个IDE?许多IDE都有VIM插件,因此您可以像使用VIM一样进行编辑。
Brian R. Bondy 2010年

2
@Brian:当然他们没有模仿所有高级功能吗?
Casebash

1
也许除了我用过的以外,其他所有功能都对VS非常有用。至少有2个。 viemu.comgithub.com/jaredpar/VsVim
Brian R. Bondy 2010年

2
@Brian R Bondy:它们甚至都没有接近涵盖vim的所有功能。他们刮擦了表面,不再真正做任何事情
Daenyth

2
或者您可能真的很明智,然后开始使用它emacs。;-)
Orbling 2010年

Answers:


32

我认为使其功能如此强大的不一定是VIM的高级功能。这是您无需为执行任何操作而不必离开键盘的事实。在巨大的文件中查找内容就像两次击键一样简单。在同一个窗口中打开和关闭多个文件的速度也非常快。

尽管乍一看似乎并不直观,但值得您花时间。即使您不将其用作标准IDE(例如,我通常使用Visual Studio或Eclipse),您也会发现使用VIM可以快速打开和编辑文件,因为它比等待IDE更快。加载。

花时间学习如何很好地使用VIM,您将永远不会后悔。我想说它相当于学习触摸式。


3
这个答案可能是Vim最有用的功能,也是唯一的功能之一。为Vim编程的任何内容也可以轻松地应用于IDE,毕竟这仅仅是文本处理……
Tamara Wijsman 2010年

4
+1虽然我是emacs的奉献者,但适用同样的论点。对于文本编辑器而言,现代的IDE过于“图形化” 。
2010年

22

对我来说,:global命令是一个杀手级应用。它将在匹配(或不匹配)正则表达式的任何行上执行任意vim命令。

这里有些例子:

默认行为是列出匹配的每一行,因此:

:g/TODO:/

将列出包含文本“ TODO:”的每一行

在还包含单词“ Mouse”的任何行上将“ Mickey”更改为“ Minnie”

:g/Mouse/ s/Mickey/Minnie/

这些命令可以有自己的范围,因此这将从带有“ TODO:”的每一行删除到下一个空白行:

:g / TODO:/。,/ ^ $ / d

使用:g!在与正则表达式不匹配的每一行上执行,例如,将“ emacs”替换为“ vim”,但包含单词“ sucks”的行除外:

:g!/sucks/ s/emacs/vim/

全局命令很棒!我从未想过像那样使用它们。
Xavier T.

Eclipse支持文件的正则表达式搜索,既可以作为单个文件,项目,也可以跨同一工作空间中的多个项目进行搜索。在某种程度上也支持正则表达式替换,但是我相信vim具有更强大的正则表达式功能。
Thomas Owens

16

我发现删除一对配对符号之间的所有内容的功能非常有用。例如,很多时候,我会发现自己想要替换代码中的字符串。因此,di"当光标位于块中时,将删除字符串,同时保持""原样,并将光标放在两个引号字符之间。da"做同样的事情,但是也会删除引号字符。


12
更好的是,ci"删除光标并将其置于插入模式,以便您可以立即开始写入。
康拉德·鲁道夫

9

“插入模式关键字完成”。在插入模式下,按Ctrl-P和Ctrl-N可搜索文本以尝试完成所键入的变量名。我从未在任何其他IDE中见过,我真的很想念它。IDE中的代码完成是不一样的。


2
您也可以适当的,如果你想代码完成,采用全方位完整。^X^O如果启用了omni,则在插入模式下完成。但是您是对的,我发现自己使用关键字补全远远超过了omni-complete。
Chinmay Kanchi 2010年

@Chinmay:我认为您的意思是“适当”。正确的代码补全可以使用局部性原理完成所有操作,即使您是在编写文本而不是代码。
ninjalj

SlickEdit具有类似的功能。而且非常像IDE
user281377 2010年

8
我完全不同意。现代的IDE(Visual Studio,Eclipse等)具有一种可以与Ctrl-N 轻松媲美(甚至超越!)的代码完成功能。如果您尚未在IDE中看到此内容,请再次查看当前版本。不幸的是,Omni-Complete无法正常工作。
康拉德·鲁道夫

8

我发现另一个非常有用的功能是更改缩进的功能。:15,30>>从15至30(含)的所有行缩进两次,而:15,30<<相同的行两次缩进。


虽然我喜欢此功能,但几乎每个IDE都有块缩进(和缩进)。
肖恩·麦克米伦

我觉得=是一样,如果不是更有益比<<>>
greyfade11年

6

命令dd(删除当前行)。我经常使用这个。

同样,能够键入类似3dd的内容并删除接下来的3行也是一件很了不起的事情。我从来没有在其他编辑器中看到过这个


Netbeans几乎具有此功能,没有选择的^ X将剪切当前行。
艾伦·皮尔斯

@Alan:不,NetBeans具有jVi :)
Hannibal Lecter博士2010年

^ K删除行,而^ u3 ^ k会删除emacs中的3行。在Visual Studio中,shift-delete的作用相同。
拉乌尔2010年

艾伦:DD也削减在这个意义上,当前行,它可以与对后面插入
user281377

3
@Raoul,我们知道有emacs系列的n个3键组合可以复制每个vim命令-仍然,3dd是诗歌。
cbrandolino

6

c命令。例如,ci"更改内引号。cw改个字。很多方便的技巧。



3

Esc ! }会将当前段落推到命令行过滤器(例如fmtwc或),which然后将结果返回给编辑器。


3

快速访问命令行。CTRL + Z或:wqa会在不到1秒的时间内为我提供命令行,而我的手不会离开键盘。


1
+1最后一点是几乎所有好处的关键部分:不用我的手就离开键盘
Orbling 2010年

...或者:!/bin/bash。我:!经常使用。
greyfade11年

我通常使用:sh
David Brown

3

我可以hjkl用来移动光标而不必离开键盘的原位。我拥有大多数程序(例如PDF阅读器),这些程序可让您更改键绑定,设置为使用Vim移动键进行滚动等。


1

由于问题的模糊性,以及IDE的不同,并且其中许多功能提供了其他功能所没有的特性(以及我仅有其中的一部分),因此,这很难回答。

但是,我认为Vim与其他编辑器(是的,甚至是Emacs)的区别就在于它确实是一个很棒的编辑器。我已经消磨了时间,使用了许多编辑器,并且可以诚实地说,很少有像Vim那样具有如此完整的用于操纵文本的功能集。

例如,我的文本处理风格包括经常使用(行/多行选择)复制和上下移动(行/多行选择),而我早就为此定义了快捷键。我想念大多数IDE的那些功能(尽管我听说过ReSharper for VS有类似的功能)。


1

您是否知道有一个eclipsevi插件?它的价格为15欧元(约合20欧元),但非常值。dd在文档中间没有更多内容,并且丢失了所有微小的有用内容。

也许有点偏离主题,但我认为值得指出。


0

根据您使用的编程语言,坚持使用ide或使用提供您可以找到的最大重构能力的ide,如果您正在使用c#,为Java使用intellij或为visual studio进行视觉辅助,则可以为Visual Studio获得帮助。最大限度地利用Eclipse或Netbeans进行重构。

我们应该从操纵文本转向操纵代码,重构工具可以为您提供这种能力。如果vim确实为您提供了所有功能,那么我真的不想再使用文本编辑器了。


3
这简直是​​胡说八道。是的,重构是一个重要的工具,但是代码本身不会编写。一个好的文本编辑器有助于远远更多的程序员的生产力比一个好的重构工具。
Chinmay Kanchi 2011年

-1

表格栏选择

在流行的IDE中似乎并不存在这种情况,如果可以,则将其隐藏起来。这对于针对CSV数据文件中的列测试正则表达式非常方便。


-3

大多数IDE不允许您拆分屏幕。我喜欢VIM中的该功能。


5
大多数IDE不是吗?我认为最实际的做法是这样做,至少是我曾经使用过的做法。
安托

你能举一些例子吗?
projecktzero 2011年

1
大多数IDE的手柄屏幕分割与Vim / Emacs不同。他们通常使用制表符来执行此操作。使用键盘很难或不可能操作它们(比较在Emacs中打开50个文件与在Eclipse中打开50个文件,然后您会很快看到Emacs获胜)。
jsternberg 2011年

大多数具有分屏功能的IDE都不提供导航/调整Ala的简便方法<C-w>
Wayne Werner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.