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

时间:2010-07-16 20:31:12

标签: visual-studio vim vi

我听说最少需要30天才能适应vi。我在第二天嘿嘿。现在,我似乎只是记住我在Visual Studio中已经做过的事情的不同快捷方式(增量搜索,上一个/下一个词等)。

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

Visual Studio有一些我想念的东西。按住Ctrl键单击鼠标进行快速复制和粘贴可能是最大的。

所以我不会气馁,你们可以告诉我你在vi中经常做的一些在Visual Studio中无法完成的事情吗?它将帮助我专注于学习内容并帮助我养成更好的习惯。

13 个答案:

答案 0 :(得分:16)

我会在这里留下this SO answer的链接。

答案 1 :(得分:10)

VI意味着永远不必将手指从键盘上移开。

答案 2 :(得分:5)

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

答案 3 :(得分:5)

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

<强>宏

为复杂(但重复)操作创建宏很容易。举一个简单的例子来说明,我们先说:

  

Line1
  Line2
  Line3
  Line4
  Line5

现在我们想用print("");语句包围每一行 将光标放在第一行,然后输入:

  • qx开始将宏录制到注册x
  • Shift + I print(" Esc 在行首插入文字
  • Shift + A "); Esc 在行末附加文字
  • j向下一行
  • q停止录制宏
  • 4@x执行4次注册x中的宏

有关Vim宏的详细信息,请参阅:help complex-repeat

文字对象

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

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

  

<b><i>some text</i></b>

现在我们要删除<i></i>之间的所有内容。只需输入命令dit d 'elete i 'nner t 'ag)即可完成此操作!或者,如果我们想在我们的选择中包含标记本身,请使用dat d 'elete a t 'ag)。要删除<b>代码中的所有内容,请使用d2it d 'elete 两个 'nner '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 anchor ^(行首)来注释掉它们)使用符号#

您还可以将搜索动作/pattern?pattern作为范围传递来做一些很酷的事情:

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

祝你好运并学习Vim!

答案 4 :(得分:4)

这篇文章让我开始使用Vim,我从未回头看过:

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

它有一些关于Vim力量的很好的例子。

答案 5 :(得分:2)

使用屏幕在通过ssh访问的远程计算机上运行会话

答案 6 :(得分:1)

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

答案 7 :(得分:1)

据我所知(在Visual C#express 2010中)ctrl-click只选择你点击的任何单词。要在VIM中执行相同操作,可以将yank命令与移动命令结合使用。

所以你按“y”表示猛拉(复制),然后按“e”或“w”复制到单词的末尾。

答案 8 :(得分:1)

存在很多差异。

  • 阻止(和列)明智地复制,粘贴,编辑
  • 点命令! (在鸭子磁带之后,这个星球上第二个最强大的工具,非常认真)

我建议您在http://vimcasts.org/观看一些截屏视频,以了解vim的强大功能。

e.g:

答案 9 :(得分:1)

您可以随时使用Visual Studio的Vim模拟器/附加组件,并获得vim与VS功能混合的一些功能。如果您已经在使用Visual Studio,我假设您使用的是.NET语言,没有VS,使用起来会更加痛苦。

答案 10 :(得分:0)

Vim Essentials是一套不错的幻灯片。

就我个人而言,很久以前我习惯了vi,当时我们在学生的Unix终端上没有鼠标的奢侈品。从那以后,我使用vi / vim来编写电子邮件的安全性。

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

使用高级和富有表现力的语言,不需要IDE(主要是python,sql,javascript)真的有帮助。我认为使用Java或C ++不会那么容易。

编码时不必移动并指向鼠标(使用浏览器是安全的)也有助于防止腕管综合症。

顺便说一句,我认为Vim与Unix在Windows上的整合程度要高于Windows ......并且说30分钟有点乐观:)

答案 11 :(得分:0)

通过SSH编辑文档。 Vim非常好。

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

答案 12 :(得分:-1)

teco是你的答案。你只需要一台PDP-10和一架ASR-33就可以了!