改变Vim的文本输入行为

时间:2013-05-30 14:29:01

标签: vim vim-plugin

[编辑:阅读评论后我意识到Surround插件毕竟是满足我的需求的,所以我将这个问题留给纯粹的学术目的,以便更好地理解vimscript的内部工作方式]

我想在Vim中添加/删除标签,引号,大括号和其他对称文本结构更容易,我发现surround.vim插件有点过于古怪,专门针对我的需求。

我真正需要的更通常是“镜像”输入模式和“镜像”删除模式,我可以直观地选择文本块,然后立即键入或删除选择的两端。作为示例工作流程,我想:

  1. 选择单词hello
  2. 点击一些击键组合进入“镜像模式”
  3. 输入“
  4. 我的文字现在说“你好”
  5. 在这个例子中,我只在每一端输入一个字符,但重要的是在第三步中我可以键入多个字符,而不仅仅是一个字符,例如我应该能够输入<b>来生成{{ 1}}(我仍然需要在结束标记中手动添加/,我可以这样做。)

    这在Vim中甚至可能吗?有人可以提供解决方案中涉及的功能的大致轮廓吗?具体来说,我不知道如何插入文本,因为它被插入然后改变它出现的位置,以便它被添加到选择块的开头和结尾而不是光标位置。同上删除。

1 个答案:

答案 0 :(得分:2)

嗯,您描述的行为正是Surround所做的:

  1. 选择单词hello
  2. 点击S
  3. 输入"
  4. 我的文字现在说"hello"
  5. 与您要求的不同之处在于“实时更新”或“实时镜像”,我不知道该怎么做。你可以看一下SnipMate或UltiSnips的那一部分。