Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Editor 将多个命令映射到Vim中的同一个键_Editor_Vim - Fatal编程技术网

Editor 将多个命令映射到Vim中的同一个键

Editor 将多个命令映射到Vim中的同一个键,editor,vim,Editor,Vim,我想将几个不同的函数映射到Vim中的一个键,并让它们一个接一个地发生 例如,我想将两个不同的函数映射到enter键-一个在前一行的最后一个字符是大括号时执行操作,另一个在前一行的最后一个字符是~时执行操作。但我想让它们在两个独立的函数中 这可能吗 另外,我也愿意寻求一种解决方案,在一个映射enter键的函数中,如果没有成功,可以调用任何其他映射。(这应该是一个注释,但恐怕太长了) 所以通常,您希望将该键映射到对函数的调用。您无法将其映射到两个对象,因此只需将其映射到一个函数,并在该函数中执行其他

我想将几个不同的函数映射到Vim中的一个键,并让它们一个接一个地发生

例如,我想将两个不同的函数映射到
enter
键-一个在前一行的最后一个字符是大括号时执行操作,另一个在前一行的最后一个字符是
~
时执行操作。但我想让它们在两个独立的函数中

这可能吗

另外,我也愿意寻求一种解决方案,在一个映射enter
键的函数中,如果没有成功,可以调用任何其他映射。

(这应该是一个注释,但恐怕太长了)

所以通常,您希望将该键映射到对函数的调用。您无法将其映射到两个对象,因此只需将其映射到一个函数,并在该函数中执行其他两个函数-一个函数在前一行的最后一个字符为空格时执行某些操作,另一个函数在前一行的最后一个字符为平铺时执行某些操作

或者,您可以使用映射函数检查前一行中的最后一个字符是什么,然后根据该字符是什么来执行-函数

我真的没什么可谈的了,所以我就到此为止:-/


评论后编辑:好吧,这里不详细介绍,但插件通常只是功能。Vim没有子例程,只有几个“类型”的函数。插件只是映射到某些键的函数

现在,我不使用SuperTab插件(听说过,但仅此而已),但是如果你想使用它,你应该能够首先找到键映射到什么(函数名是什么)以及从那里,特定函数做什么。需要什么样的论据等等

从这里开始,问题仅仅是找到如何创建一个包装函数来测试前一个字符,并在此基础上执行该插件函数,或者执行您想到的做其他事情的函数

不确定你所说的“一般方式”

(这应该是一个评论,但恐怕太长了)

所以通常,您希望将该键映射到对函数的调用。您无法将其映射到两个对象,因此只需将其映射到一个函数,并在该函数中执行其他两个函数-一个函数在前一行的最后一个字符为空格时执行某些操作,另一个函数在前一行的最后一个字符为平铺时执行某些操作

或者,您可以使用映射函数检查前一行中的最后一个字符是什么,然后根据该字符是什么来执行-函数

我真的没什么可谈的了,所以我就到此为止:-/


评论后编辑:好吧,这里不详细介绍,但插件通常只是功能。Vim没有子例程,只有几个“类型”的函数。插件只是映射到某些键的函数

现在,我不使用SuperTab插件(听说过,但仅此而已),但是如果你想使用它,你应该能够首先找到键映射到什么(函数名是什么)以及从那里,特定函数做什么。需要什么样的论据等等

从这里开始,问题仅仅是找到如何创建一个包装函数来测试前一个字符,并在此基础上执行该插件函数,或者执行您想到的做其他事情的函数


不确定你所说的“一般方式”

问题是,其他函数不是我的代码,它们是其他插件。例如,我想映射“tab”来做一些特殊的事情,但我还想确保如果“特殊”的事情没有发生,“tab”将保留“SuperTab”功能。Expcept我想用一种通用的方式来实现这一点。通常,插件提供了一种调用其映射的方法-您可以通过使用
:imap
检查插件中的默认映射来找到应该调用的内容。您还可以使用
normal
命令模拟vim功能内部的按键。然后你可以检查这行的末尾是什么,然后用
normal i
之类的东西从你的插件触发映射。嗨,谢谢你的回答,因为某种原因,今天才看到它。所谓“通用方式”,我的意思是我想创建一个“包装函数”,它适用于所有可能的插件,而不仅仅是supertab。我事先不知道用户可能还有什么其他映射。我认为最好的解决方案是创建一个函数,通过编程检查tab键当前映射到的内容,然后在运行后调用该函数。@edanmor-没有问题。是的,大致是这样的——我不确定你能用那种方法“通用”到什么程度,但我对什么有效感兴趣。玩一玩,如果你还记得这一点,把你想到的贴在这里。问题是,其他函数不是我的代码,它们是其他插件。例如,我想映射“tab”来做一些特殊的事情,但我还想确保如果“特殊”的事情没有发生,“tab”将保留“SuperTab”功能。Expcept我想用一种通用的方式来实现这一点。通常,插件提供了一种调用其映射的方法-您可以通过使用
:imap
检查插件中的默认映射来找到应该调用的内容。您还可以使用
normal
命令模拟vim功能内部的按键。然后你可以检查这行的末尾是什么,然后用
normal i
之类的东西从你的插件触发映射。嗨,谢谢你的回答,因为某种原因,今天才看到它。所谓“通用方式”,我的意思是我想创建一个