![自定义映射 >斜体标记文本/光标下的文本< (使用 vim)](https://linux22.com/image/232621/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%98%A0%E5%B0%84%20%3E%E6%96%9C%E4%BD%93%E6%A0%87%E8%AE%B0%E6%96%87%E6%9C%AC%2F%E5%85%89%E6%A0%87%E4%B8%8B%E7%9A%84%E6%96%87%E6%9C%AC%3C%20(%E4%BD%BF%E7%94%A8%20vim).png)
我在这里找不到它,在其他地方也找不到。要么是它太简单了,要么是我找错了地方,或者其他什么原因。(也许答案就在那里,或者更糟的是,就在我所不知道的某个地方)。
我想创建一个“快捷方式”。当我的光标位于某个单词上时,我希望该单词(在输出中)变为斜体,即用 \emph{some word} 包围它。
我正在使用 vim (带有 LaTeX-Suite),因此使用它FEM
来启动斜体“模式”和ctrl“j结束它”非常简单。但对于已经写好的文本,它变得更加复杂。
经过研究,
我尝试
: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>
在插入模式下这映射到
- 退出正常模式
- 删除光标下的单词(
diw
序列) - 进入插入模式
- 类型
\emph{
- 退出正常模式
- 将选中的单词放在光标下方
- 再次进入插入模式
- 向右移动,然后输入
}
让您处于插入模式。(由于这是一个imap
,它以插入模式启动并以插入模式结束。如果您希望它以正常模式开始工作,我建议您使用nmap
并将第一个移动<ESC>
到咒语的末尾,以以正常模式启动并以正常模式结束。)
当然,如果您的“单词”可以包含字母数字字符以外的内容,这会引起麻烦,因为diw
除非您重新定义一些其他内容(例如 vim 如何识别单词边界),否则该咒语对符号不起作用。