7

使用 DelimitMate,它会自动生成右括号。当我在括号内完成输入后,我按什么键可以快速转到右括号的右侧?(现在我必须手动按 ESC 然后按 'a')

4

8 回答 8

11

这些自动关闭插件的想法(就像 Eclipse 等 IDE 中的原始功能实现)是您只需键入关闭字符即可查看它。插件应该检测到这种情况,而不是插入字符会跳过现有的自动插入的字符。

如果这对您不起作用,可以提供多种插件替代方案。Vim Tips Wiki有一个列表。

于 2013-02-08T11:13:07.103 回答
8

使用delimitMateShift-tab将跳出当前分隔符并Control-G g让您摆脱嵌套分隔符。无需重新映射任何东西。

于 2013-12-01T00:34:58.370 回答
5

你可以试试自动配对的飞行模式

例如:

( hello| world )

press ) at |

( hello world )|

如果跳转不正确,用<M-b>做后插。

例如:

(hello| world()

press ) at |

(hello world()|

press <M-b>

(hello)| world()

仓库:https ://github.com/jiangmiao/auto-pairs

插件:http ://www.vim.org/scripts/script.php?script_id=3599

添加

let g:AutoPairsFlyMode=1 

到 .vimrc 打开飞行模式

于 2013-02-19T08:58:53.840 回答
4

你可以做一个自定义地图。我猜你想在insert模式下转到右括号的右边。只需添加到您的.vimrc此映射中:

:inoremap <F8> <ESC>f)a  

这样,当你在insert mode括号内写完的时候,F8会将你的光标移到右括号的右边。如果您愿意,您可以更改映射键,使用另一个键而不是F8.

正如肯特在评论中所说,一个更通用的解决方案是:

:inoremap <F8> <ESC>%%a  

这将适用于[{括号。

于 2013-02-08T11:44:18.350 回答
1

我有点同意 Atropo 的观点:如果您想坚持使用 DelimitMate,那么对您的工作流程的最小干扰可能是制作自定义 imap 以到达自动插入字符的另一侧。

就我个人而言,我更喜欢控制自动插入字符的位置/时间,以及如何在自动插入的字符中导航;UltiSnipsSnipMate为我做到了这一点。也许他们更多的是你正在寻找的东西。

于 2013-02-08T13:54:25.063 回答
0

如果您在新行上键入内容,请尝试A在行尾附加文本。

于 2013-02-08T10:54:30.767 回答
0

我已经安装了自动关闭。我目前正在做的是(“我”是光标)

- (xxxxI)
- ( xxxxI )
- ( xxxxIxx )
- text (xxxxI) other text
- text ( xxxxI ) other text
- text ( xxxxIxx ) other text

我只是做了一个映射,<esc>%%a然后在上述情况下,光标将移动到(...)I..whatever

它不适用于报价。

于 2013-02-08T11:18:30.080 回答
0

派对有点晚了,但请注意,无需任何自定义映射即可轻松完成。在插入模式下,您可以按<C-O>(默认映射)进入“一次性”正常模式,您可以在其中输入单个正常模式命令。

因此,要回答您的问题,您可以做的是<C-O>a.

于 2014-12-15T19:33:04.533 回答