我最近在一个朋友的要求下切换到Vim后,崇高文本2决定它不相信一个模块被安装,即使它是...我离题了。
我已经设法设置了一些东西,使编辑Python(目前我唯一的语言)更容易。然而,有一个功能我从Sublime遗漏。它会自动添加一个冒号到需要它们的行的末尾(函数定义的开头,if语句等)。这防止了无数恼人的错误,我想念它:P
我想知道是否有某种命令可以放在.vimrc中来完成此操作。
例如:如果要输入def
,我希望Vim自动插入一个冒号,使其成为def :
,并将光标放在冒号前面,以便我输入函数名。
如果我有任何愚蠢的地方,请干杯并道歉。
6条答案
按热度按时间o3imoua41#
我强烈建议您使用
iabbr
来进行这些小的修复,而不是像@CG Mortion的回答所建议的那样使用imap
。对于
imap
,您永远无法在插入模式下键入“define,”除非您在按“d”、“e”或“f”之间暂停,或者做了一些其他的黑客操作来阻止Map的发生。使用iabbr
,缩写只有在按下非关键字字符时才会展开。iabbr def def:<left>
的工作方式与您的预期完全一样,它没有不具有X1 M5 N1 X的缺点。正如在其他答案中提到的,我也建议你在决定要更复杂的东西时,转向使用代码片段引擎。它们非常强大,可以保存大量的时间。
blpfk2vs2#
看看the old snipmate、the new snipmate和ultisnips,这些插件提供了与TextMate系统大致相似的“代码段扩展”机制。
4si2a6ki3#
这个snippet并不能完全满足您的要求,但它可能对您仍然有用。
基本上,当您按Enter键时,它会在一行的末尾放置一个分号(如果该行以预定义的单词开头,而冒号还没有出现)。
kyvafyod4#
这是一个相当笨拙的答案,但您可以执行一个简单的Map,如:
它会执行您想要的操作。也就是说,当您键入“def”时,它会将其解释为“def:”,然后返回到正常模式(在这里您可以移动一点),然后返回到插入模式。
这同样适用:
当然,问题是每当def出现时,它就会替换它们,这是不理想的。
ht4b089n5#
类似问题:https://stackoverflow.com/a/6950427/875064
tf7tbtn26#
我使用LunarVim并在配置中添加以下行: