我听说至少要花30天的时间来适应六合彩。我在第二天,呵呵。现在,我似乎只记住我在Visual Studio中已经做过的事情的不同快捷方式(增量搜索、prev/next word等)。
到目前为止,最强大的方面似乎是结合了命令的数字键(5*下一行),以及正常/插入模式的思想。
我从Visual Studio中错过了一些东西。按住Ctrl键单击鼠标进行快速复制和粘贴可能是最大的。
为了不让我气馁,你们能带我看一下你们在vi中经常做的一些在Visual Studio中做不到的事情吗?它将帮助我集中精力学习什么,帮助我养成更好的习惯。
- 强制性imgs.xkcd.com/comics/real_programmers.png
- @布拉德该死的Emacs!!!!
- 只是为了咆哮…我总是错过了窗户上的X鼠标…即使是按一下ctrl键也会对该功能造成太大的影响。
- 啊哈,是XKCD钉的那个
- 在我看来,这更像是花一年的时间让你的速度赶上你以前的编辑。一开始,你会考虑很多捷径,以及如何做最好的事情。这是时间,它分散了任务本身的注意力。
我只会留下一个链接,所以在这里回答。
- 链接的so是这个网站的最大荣耀之一。它只介绍了vi的一小部分(甚至不介绍vim,只介绍了30年前的vi),但是每一句话都显示出比大多数ide更强大的能力。当您将vi的固有能力与可用的扩展和插件结合在一起时(intellisense?是的,就是这样),您将到达一个仍然是有史以来最强大的开发环境之一。
- 哈哈,大……我以后一定会读这篇文章并在这里发表评论。
- 有一个名为vsvim的Visual Studio插件,它允许在Visual Studio中使用vim的大部分功能….所以在这方面,答案是"几乎没有"!请参阅visualtudiogallery.msdn.microsoft.com/…或在Visual Studio中使用Tools -> Extensions & Updates,然后搜索vsvim。
vi意味着永远不需要把你的手指从键盘上拿下来。
- 那是真的。我讨厌在不同的笔记本电脑或电脑上工作,也讨厌处理主页、终端和页面键所在位置的不一致。鼠标有点麻烦,但到目前为止,它节省了我的时间,因为我可以快速准确地点击页面。我笔记本电脑上的拇指垫仍然让我的手停留在键盘上。
- 这就是我无法摆脱VIM的原因(也是为什么我更喜欢VIM而不是EMAC)。
- 因此,如果您错过了ctrl+点击,那么只需尝试学习注册(复制/粘贴),或者(如果您不喜欢)不要使用vim。
- 但是学习要复制和粘贴的寄存器会比使用我的拇指板和ctrl+click'ing更快吗?例如,当我在选定的文本中重命名几个单词时。
- 对。键盘比鼠标快的多。你浪费时间1)伸出手,找到老鼠。ascreen real estate,2)将鼠标移到不需要的位置3)将手移回键盘,然后再次找到主行。使用vi,您可以使用搜索和替换更多的内容,使用完整的regex,您可以进行一些非常复杂的模式匹配。这样就不需要像雪貂一样按Ctrl键。
请注意,我不使用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,使用它会更痛苦。
- 正确的。我正在考虑安装VIEMU。由于您也是.NET开发人员,您发现自己在VIM Emulator中做了哪些在Visual Studio中无法做的快捷方式或行为?
有很多不同之处。
- 分块(和列)复制、粘贴、编辑
- 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/
- 谢谢。回家后,我会给这些屏幕演员一个完美的视角。
- 如果按住alt然后拖动,则可以使用分块操作。
据我所知(在Visual C Express 2010中),ctrl click只选择您单击的任何单词。要在VIM中执行同样的操作,您可以将扬克命令与移动命令结合起来。
所以你按"Y"键(复制),然后按"E"或"W"键复制到单词的末尾。
- 或者"aw"/"iw"(代表"一个词"和"内部词"),如果你在词的中间。
- 我应该澄清一下……我指的是在按住Ctrl键的同时快速移动鼠标的能力。当单词在屏幕上散开时,如何使用键盘复制和粘贴5次?我用我的鼠标和我的视觉瞄准所有我想替换的单词。在vi中有没有更有效的方法可以做到这一点?
- @DJMC-你是认真的吗?这个例子就是公然捕鼠。如果你花一天的时间在屏幕上疯狂地点击,那么你就不需要vi了。你需要一种焦虑。-)
- 哈哈哈,也许我会拍一些截图,然后在这方面发布另一个问题。我不认为这太浪费时间。如果这是一个分布在多个文件上的更大的搜索/替换作业,我将使用QuickFind/QuickReplace框。但是,如果这是一段代码,而不是通过重构智能来更改,那么只需5秒钟的时间鼠标移动并复制/粘贴新代码。
- @DJMC-是的,这是环境驱动的。vi与其他编辑器有很大不同的一个领域是用于剪切和粘贴的范例。这是非常不同的。当我使用非模态编辑器(如这个注释框)时,我经常发现自己缺少定向运动操作。如果我看到拼写错误的单词,我必须将鼠标移到那里,而不是反向搜索拼写错误的单词。文本区块,便于移动和动作。
Visual Studio的正则表达式有点像米老鼠。Vim拥有完整的POSIX正则表达式语言。
- 是的,但我不记得上次我需要完整的POSIX正则表达式时(无论如何都是在编码时)。
- @Unclebrad,我每天使用多次regex搜索。
- @JSB我只是说,我通过了米老鼠正则表达式。
- 该死的,我在雷吉斯太差劲了。作为一名程序员,这可能是我最大的缺点之一。也许使用vi可以帮助我学习。
- @JSB:在我多年的编码工作中,我从来没有需要regex搜索源文件。如果您使用regex是为了您应该使用的实际解析器(vim不是),比如搜索方法的用法,或者查找变量的定义,那么就错了。
- vs2013中的语法现在是posix
通过ssh编辑文档。维姆真的很乐意。
编辑:看起来很多人已经说过了:)
Vim Essentials是一组很好的幻灯片。
就我个人而言,我很久以前就习惯了vi,那时我们在学生的Unix终端上没有鼠标的奢华。从那以后,我用vi/vim来处理所有安全的邮件。
到目前为止,我可能只使用了1/20的命令,但从未觉得有必要用另一个文本编辑器编写代码,而且在IDE中触摸鼠标对我来说非常笨拙。
使用高级和表达性语言,不需要IDE(主要是python、sql、javascript)确实有帮助。我想这对Java或C++来说不是那么容易。
编码时不必移动和用鼠标指向(安全使用浏览器)也有助于预防腕管综合征。
顺便说一句,我想Vim与Unix的集成比与Windows的集成更好…谁说30分钟有点乐观:)
- 谢谢你的链接。如果您不使用IDE,我可以肯定地看到vi是如何非常强大的。然而,我是从一个IDE+鼠标的角度来表达这个问题的。vi是如何改进这种体验的?
- 我不知道:)我上次使用IDE已经很久了。但是如果你想要两者兼得,viemu.com就是在Visual Studio中模仿vi。这是一款30天试用期的商业产品。对我来说,主要是速度…在光标下搜索单词的下一个匹配项?按"*"。增加光标下的数字?ctrl-a.等等。
- 是的,那是真的……Viemu希望是两个世界中最好的。看起来他们仍然在测试VS2K10,但我稍后会给它一个机会。我认为Visual Studio也可以做很多vi可以做的事情。查找下一个单词是ctrl-f3。我不确定是否有一个等价的数字来增加这些。如果需要更改ffor循环索引器的初始值,我想这很有用?
Teco是你的答案。你只需要一个PDP-10和一个ASR-33就可以上路了!