我正在编写一个在 LaTeX 中编辑特定环境的函数。
环境基本上是这样的:
\begin{quicktikz}
...some stuff...
\end{quicktikz}
或者像这样:
\begin*{quicktikz}
...some stuff...
\end{quicktikz}
我想编写一个在从环境中调用时在两者之间切换的函数。由于我的 Vim 知识还不够,我想出了一个简单的解决方案:
- 获取光标位置
let save_cursor=getpos(".")
.
- 向后搜索
\begin{quicktikz}
using: ?\\begin{quicktikz}\|\\begin\*{quicktikz}
.
- 搜索
{
并向左移动使用:normal 0f{h
.
- Check if the item under cursor equals
*
:
- 如果是的话,做
normal x
;
- 如果没有,请执行
normal a*<esc>
.
- 使用恢复光标位置
call setpos('.',save_cursor)
.
除了步骤 3 之外,我知道如何执行所有这些操作。如何检查光标下的字符是否等于*
or not?
如果您知道更好的方法,欢迎分享。
我认为检索光标下的字符的最简单方法是:
getline(".")[col(".")-1]
或者,你可以这样做strpart()
strpart(getline("."), col(".")-1, 1)
第一个表达式首先调用函数getline() http://vimdoc.sourceforge.net/htmldoc/eval.html#getline()通过"."
作为
参数表示将返回光标所在的行。
然后我们使用所谓的expr8 or expr-[](参见help http://vimdoc.sourceforge.net/htmldoc/eval.html#expr8)来检索
单个字符。传递的数字来自另一个函数,col() http://vimdoc.sourceforge.net/htmldoc/eval.html#col()它返回当前光标列。由于索引从 0 开始,因此减一。
你可以像这样使用它
if getline(".")[col(".")-1] == '*'
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)