我正在尝试逐个学习 vim 的按键绑定。我认为我应该尽早掌握的方法是找到一串文本并将其替换为其他内容。
我已经在 Windows 上的 E-TextEditor 上成功完成了此操作,我将输入 v/something/\rsomethingelse
以达到预期效果。
但我发现在 SublimeText 2 的命令模式下情况并非如此。在 ST2 中,一旦我进入命令模式,我按下 v 键,编辑器就会进入可视模式,然后如果我输入 /,它就会进入搜索,然后我输入单词“something”,如果我按下“/”,它将成为搜索查询的一部分,而不是结束正则表达式,好吧,我想,然后我按下回车键查看是否选择了某个实例,但没有,esc 或我能想到的任何其他键也没有。请注意,“something”的实例确实被找到了,但只是没有被选中进行进一步的操作。
SublimeText2 中是否存在此功能,或者我遗漏了什么?
答案1
Nik,你要么学习 Vim,要么学习 Sublime Text 2。
ST2 的复古模式最多只能很好地近似 Vim 的最基本功能之内Sublime Text 的限制。
例如,它没有相同的命令行,因此不提供 Vim 的强大搜索/替换功能。
为此,您必须使用 ST2 自己的搜索/替换机制,通过键入Ctrl
+来访问h
。
当您输入/
“命令模式”时,窗口底部会显示搜索栏。由于它是 ST2 自己的搜索栏(也可以通过Ctrl
+访问f
),因此它的工作方式与替换栏完全不同。更不像 Vim 的命令行。
复古模式/vim 的相似之处列表比它们的区别列表短数千倍,所以我建议您停下来想想你真正想要做什么:
a)
学习如何使用 Sublime Text 2,这是一款非常优秀的文本编辑器
或者
b)
学习如何使用 Vim,它是目前最好的两个文本编辑器之一(我是多么的圆滑啊)。
如果您选择,a)
您根本不需要激活复古模式,因为它的大多数功能都是 1/1 映射到 ST2 自己的功能。不要再看 Vim 文章了,而是花时间学习 ST2 的工作原理以及如何充分利用它。
如果你选择b)
第一步必须可以通过 Terminal.app 进行 vim 教程:输入vimtutor
并跟着做。完成之后vimtutor
(可能要重复几次),您可以下载最新版本的 MacVim 并开始应用新知识。
不做这个选择不会让你有任何收获,因为你会发现 Vim 的大多数功能在 ST2 中都无法使用,而在那里可以使用的功能只是 Vim 如此令人惊叹的特性中的很小一部分。
最终,你的选择并不重要。重要的是你做出了选择并且集中精力。
答案2
尼克,虽然我确信你的意图是最好的,但我必须说我(大部分)同意@romaini 的观点。
Vim和Sublime Text 2(ST2) 是两个不同的编辑器,尽管它们试图相似(好吧,一个比另一个更努力)。我没有使用过ST2很多,但是 Vim我用过不少,它在这方面表现很好,所以值得学习。确实,学习起来可能有点费劲,但随着时间的推移,你学到了“新技巧”,事情就会越来越“合乎逻辑”。
Vim 的“力量”来自于几件事;映射,操作者/机芯 组合和常用表达。
例如,如果我们获取您的字符串:
print('AwfullyWide')
print('NotReally')
您在第一行的开头,并且想要替换撇号内的内容。通过输入ci'
代表change inside apostrophe
(change
的是操作员,inside '
是个运动(文本)执行操作符后,您将得到print('')
可以替换里面的文本的结果。
如果您问自己“我希望用某段特定文本实现什么目的?”,那么 Vim 的这种工作方式将得到最好的理解。然后一切就开始变得有意义了。
当然,如果你想一次性完成,:%s/AwfullyWide/NotReally
一个简单的替换就能达到同样的效果。当然,正则表达式的潜力远不止这种简单的替换。