这真的是空白的问题。有一组VIM的命令如何在原始模式下运行几个vim命令
:命令1:命令2
等,我会以啃老族在原始经常打字。我如何使它自动?这是简单的正则表达式替换命令集,但我不能脚本那些sed的,因为它涉及非拉丁语言环境中,由于某种原因VIM处理非拉丁正则表达式正确,而sed的不。
这真的是空白的问题。有一组VIM的命令如何在原始模式下运行几个vim命令
:命令1:命令2
等,我会以啃老族在原始经常打字。我如何使它自动?这是简单的正则表达式替换命令集,但我不能脚本那些sed的,因为它涉及非拉丁语言环境中,由于某种原因VIM处理非拉丁正则表达式正确,而sed的不。
为什么不把它们放在一个函数中,然后调用函数?
如果命令集并不总是相同的,这些命令可以被记录在一个宏:
qq
开始录制宏(第二q是宏的“名称”)@q
重播宏与其他任何命令一样,宏可以连续执行几次,例如, [email protected]
。
如果设置了:noremap
,宏可以从一个会话保存到另一个寄存器。
谢谢!我认为我需要的是一个宏。很好的解释。 – Temujin 2010-06-05 10:12:47
你可以
使他们命令
:command! DoStuff thing1 | thing2
然后用
:DoStuff
或宏
0123执行它qq:thing1<CR>:thing2<CR>q
(<CR>
的意思是 “按ENTER”),您 访问与
@q
或功能
:funct! DoStuff()
: thing1
: thing2
:endfunct
你
电话与
:call DoStuff()
或访问通过命令
:command! DoStuff call DoStuff()
您使用
:DoStuff
或执行只是运行
:thing1 | thing2
在一个命令行,然后 打:thi
(即前几个字母命令 ),然后使用 向上箭头回顾最近 线以该命令启动 命令历史。
使用“栏”,即|
,命令分隔符不会与所有的命令工作,但将大部分工作。如果thing1
或thing2
是不能用条被测序的一个命令,你就必须要么
,或者你可以做
做:exec 'thing1' | exec 'thing2'
on the command line or in :command
,但如果thing1
或thing2
本身包含单引号,则必须小心。
选择其中的这些选项是最合适的,通常是根据你想做的事情的复杂性。
功能可以很容易地参数你的命令,即在他们使用的变量,并且是结合了一长串的命令是有用的,但有点啰嗦了简单的情况。有关详细信息,请参阅:help user-functions
。
宏很方便,但你只能有26个,他们通常很差的命名(即与一些字母的字母)。另外请注意,如果你通过y
,c
等存储了相同的寄存器,它会覆盖你的宏。详情请参阅:help recording
。
命令让你给你的程序一个有意义的名字,可以在比函数以不同的方式进行参数化,并可以做其他花哨的东西像标签完成。命令必须写在一行中,这是vim脚本执行除了调用函数之外什么都不做的命令的常见原因之一。有关更多信息,请参阅:help user-commands
。
如果这一系列的命令最终被你定期使用的东西,你可以在你的宏/命令/函数定义添加到您的vimrc
文件,这将导致它准备去当你使用VIM。在linux或OS/X下,您的vimrc文件是文件~/.vimrc
。在你的vimrc中设置宏是非常棘手的,如果你想要达到这个长度,不妨将它设置为函数或命令。
我不熟悉vim函数。需要读一点关于它。 – Temujin 2010-06-05 09:58:50
@ temujin.ya.ru - 除了vim的帮助,请尝试vim.wikia.org - 有一些很好的例子。 – Rook 2010-06-05 14:14:56