自定义映射 >斜体标记文本/光标下的文本< (使用 vim)

自定义映射 >斜体标记文本/光标下的文本< (使用 vim)

我在这里找不到它,在其他地方也找不到。要么是它太简单了,要么是我找错了地方,或者其他什么原因。(也许答案就在那里,或者更糟的是,就在我所不知道的某个地方)。

我想创建一个“快捷方式”。当我的光标位于某个单词上时,我希望该单词(在输出中)变为斜体,即用 \emph{some word} 包围它。

我正在使用 vim (带有 LaTeX-Suite),因此使用它FEM来启动斜体“模式”和ctrlj结束它”非常简单。但对于已经写好的文本,它变得更加复杂。

经过研究,
我尝试

:call IMAP ("< S-F6>", "b i FEM < ESC> d e i { < ESC> e a } < ESC>", "tex")*

(我会把它翻译成文字:转到单词的开头,插入,创建 \emph 环境,退出(到正常模式),删除到单词的末尾(即,到 <++> 的末尾),插入 {,退出,转到单词的末尾,插入 }(之后),然后退出回到正常模式。听起来很复杂,我想有数百万种其他方法可以做到这一点,但这不是问题)
我尝试了各种版本的在and\之前添加(我认为 vim 喜欢这样),不使用空格等等。什么都没有发生。< ESC>}

我也试过

:nm {< S-F6>} {see above}  

然后我就精疲力尽了,就放弃了。

好吧,也许

  • 该函数已存在于某处
  • shift-f6不是可接受的运算符
  • ???

无论如何,我希望你能帮忙

*NB 我添加了一个空间每一个之后, <因为否则它不会打印。它不在代码中(尝试)

答案1

这实际上是一个 vim 问题,而不是 TeX 问题,但在 LaTeX 套件中,`em在可视模式下键入会将当前选择放入\emph{}。要在可视模式下选择一个单词,请键入aw。因此,在正常模式下,vaw`em将在 内选择一个位置的当前单词\emph{}

答案2

这应该可以工作,从我的 .vimrc 中修改并剪切出来

imap <F5> <ESC>diwi\emph{<ESC>pi<Right>}

<F5>在插入模式下这映射到

  1. 退出正常模式
  2. 删除光标下的单词(diw序列)
  3. 进入插入模式
  4. 类型\emph{
  5. 退出正常模式
  6. 将选中的单词放在光标下方
  7. 再次进入插入模式
  8. 向右移动,然后输入}

让您处于插入模式。(由于这是一个imap,它以插入模式启动并以插入模式结束。如果您希望它以正常模式开始工作,我建议您使用nmap并将第一个移动<ESC>到咒语的末尾,以以正常模式启动并以正常模式结束。)

当然,如果您的“单词”可以包含字母数字字符以外的内容,这会引起麻烦,因为diw除非您重新定义一些其他内容(例如 vim 如何识别单词边界),否则该咒语对符号不起作用。

相关内容