djm*_*jmc 16 vi vim visual-studio
我听说最少需要30天才能适应vi.我在第二天嘿嘿.现在,我似乎只是记忆我在Visual Studio中已经做过的事情的不同快捷方式(增量搜索,上一个/下一个词等).
到目前为止,最强大的方面似乎是结合命令的数字键(5*下一行),以及正常/插入模式的想法.
我想念Visual Studio有一些东西.按住Ctrl键单击鼠标进行快速复制和粘贴可能是最大的.
所以我不气馁,你们可以告诉我你在vi中经常做的一些在Visual Studio中无法完成的事情吗?它将帮助我专注于学习内容并帮助我养成更好的习惯.
请注意,我不使用Visual Studio,并且对其中的可用功能知之甚少.以下是我在Vim中发现有用的示例,而不是Visual Studio中缺少的功能列表.
宏
为复杂(但重复)的操作创建宏很容易.举一个简单的例子来说明,我们先说:
Line1
Line2
Line3
Line4
Line5
现在我们想在print("");
声明中包含每一行.
将光标放在第一行,然后输入:
qx
开始将宏记录到寄存器中 x
print("
Esc 在行的开头插入文本");
Esc 在行尾添加文本j
走下一条线q
停止录制宏4@x
在寄存器中执行宏x
4次有关:help complex-repeat
Vim宏的更多信息,请参阅.
文字对象
请注意,这是Vim对传统Vi的改进之一.如果它不起作用,您可能正在Vi兼容模式下运行; 用于:set nocompatible
启用Vim的全部功能.
文本对象允许您轻松选择文本区域.假设我们从以下文本开始,将光标放在一些文本上:
<b><i>some text</i></b>
现在我们要删除<i>
和之间的所有内容</i>
.这可以通过简单地键入命令来完成dit
(d "elete 我 " nner 牛逼 "AG)!或者,如果我们想在我们的选择标签本身,使用dat
(d "elete 一个 牛逼 " AG).要删除里面的一切<b>
标签,使用d2it
(d "elete 2 我 " 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锚点(行首)来注释掉它们#
.您也可以通过传递搜索动作/pattern
或?pattern
作为范围来做一些很酷的事情:
:?test?move .
向后搜索包含测试的行,并将其移动到文件中的当前位置:/test/copy .
向前搜索包含测试的行,并将其复制到文件中的当前位置祝你好运,学习Vim吧!
Visual Studio 的正则表达式有点像米老鼠。Vim 拥有触手可及的完整 POSIX 正则表达式语言。