我在VIM中可以做些什么,我还不能在Visual Studio中做什么?

What can I do in VIM that I can't already do in Visual Studio?

我听说至少要花30天的时间来适应六合彩。我在第二天,呵呵。现在,我似乎只记住我在Visual Studio中已经做过的事情的不同快捷方式(增量搜索、prev/next word等)。

到目前为止,最强大的方面似乎是结合了命令的数字键(5*下一行),以及正常/插入模式的思想。

我从Visual Studio中错过了一些东西。按住Ctrl键单击鼠标进行快速复制和粘贴可能是最大的。

为了不让我气馁,你们能带我看一下你们在vi中经常做的一些在Visual Studio中做不到的事情吗?它将帮助我集中精力学习什么,帮助我养成更好的习惯。


我只会留下一个链接,所以在这里回答。


vi意味着永远不需要把你的手指从键盘上拿下来。


请注意,我不使用Visual Studio,对其中的可用功能知之甚少。以下是我在VIM中发现有用的示例,而不是Visual Studio中缺少的功能列表。

为复杂(但重复)操作创建宏很容易。为了用一个简单的例子来说明,假设我们从以下内容开始:

Line1
Line2
Line3
Line4
Line5

现在我们要将每一行封装在一个print("");语句中。将光标放在第一行,然后输入:

  • qx开始将宏记录到寄存器x中。
  • shift+iakbd print("esc在行首插入文本
  • shift+a ");esc在行尾附加文本
  • j向下走一条线
  • q停止记录宏
  • 4@x执行寄存器x4次宏

有关vim宏的更多信息,请参阅:help complex-repeat

文本对象

注意,这是Vim对传统vi的改进之一。如果它不起作用,您可能正在vi兼容模式下运行;使用:set nocompatible启用Vim的全部功能。

文本对象允许您轻松选择文本区域。假设我们从以下文本开始,并将光标放在一些文本上:

some text

现在我们要删除之间的所有内容。只需键入命令dit(d'elete i'nner t'ag)!或者,如果我们想在选择中包含标签本身,请使用dat(d'elete a't'ag)。要删除标记内的所有内容,请使用d2it(删除两个i'nner t'ags)。

您也可以使用daw(删除一个字)、dap(删除一段)、di"等;完整列表见:help text-objects

文本对象的另一个有用示例:

v2ap"+y

  • v切换视觉模式。这样可以更容易地看到您选择的内容,并允许您在执行命令之前通过一系列多个动作调整您的选择。
  • 2ap选择本段和下一段
  • "+选择系统剪贴板作为下一个操作的寄存器。
  • y将所选内容猛拉到给定的寄存器

换句话说,该命令会将文本中的两个段落复制到系统剪贴板(例如,用于在StackOverflow处粘贴它们)。

全局编辑global命令用于将ex命令应用于与给定正则表达式匹配的所有行。实例:

  • :global/test/print:g/test/p将打印包含短语test的所有行。
  • :global/test/delete:g/test/d将删除所述行。
  • :global/test/substitute/^/#/:g/test/s/^/#/将搜索包含短语test的行,并用符号#替换regexp锚^(行首)对其进行注释。

通过将搜索动作/pattern?pattern作为范围传递,您还可以执行一些很酷的操作:

  • :?test?move .向后搜索包含测试的行,并将其移动到文件中的当前位置。
  • :/test/copy .向前搜索包含测试的行,并将其复制到文件中的当前位置。

祝你好运,学习VIM快乐!


在仅允许ssh访问的Solaris计算机上编辑文件。


这篇文章是我从Vim开始的,我从来没有回顾过:

网址:http://www.viemu.com/a-why-vi-vim.html

它在维姆的力量方面有一些很好的例子。


使用screen在通过ssh访问的远程计算机上保持会话运行


您可以一直使用VIM Emulator/Add-on for Visual Studio,并将VIM的一些功能与VS的功能混合在一起。如果您已经在使用Visual Studio,我假设您使用的是.NET语言,如果没有VS,使用它会更痛苦。


有很多不同之处。

  • 分块(和列)复制、粘贴、编辑
  • DOT命令!(在duck tape之后,是地球上第二个最强大的工具,认真地说)

我建议您在http://vimcasts.org/上观看一些屏幕广播,以了解vim的威力。

例如。:

  • http://vimcasts.org/si集/creating-the-vimcasts-logo-as-ascii-art/
  • http://vimcasts.org/ci集/selecting-columns-with-visual-block-mode/


据我所知(在Visual C Express 2010中),ctrl click只选择您单击的任何单词。要在VIM中执行同样的操作,您可以将扬克命令与移动命令结合起来。

所以你按"Y"键(复制),然后按"E"或"W"键复制到单词的末尾。


Visual Studio的正则表达式有点像米老鼠。Vim拥有完整的POSIX正则表达式语言。


通过ssh编辑文档。维姆真的很乐意。

编辑:看起来很多人已经说过了:)


Vim Essentials是一组很好的幻灯片。

就我个人而言,我很久以前就习惯了vi,那时我们在学生的Unix终端上没有鼠标的奢华。从那以后,我用vi/vim来处理所有安全的邮件。

到目前为止,我可能只使用了1/20的命令,但从未觉得有必要用另一个文本编辑器编写代码,而且在IDE中触摸鼠标对我来说非常笨拙。

使用高级和表达性语言,不需要IDE(主要是python、sql、javascript)确实有帮助。我想这对Java或C++来说不是那么容易。

编码时不必移动和用鼠标指向(安全使用浏览器)也有助于预防腕管综合征。

顺便说一句,我想Vim与Unix的集成比与Windows的集成更好…谁说30分钟有点乐观:)


Teco是你的答案。你只需要一个PDP-10和一个ASR-33就可以上路了!