gpt4 book ai didi

LaTeX 环境中的 Vim 操作

转载 作者:行者123 更新时间:2023-12-04 15:25:10 27 4
gpt4 key购买 nike

我想知道当我在使用 vim 编写代码/ latex 时处于特定环境中时如何触发特定操作。例如,假设我正在编写 tex 并在 align 环境中,那么我希望我输入的每个等号都转换为 &=。

我现在想的比较麻烦。这是我的 vimrc 中的伪代码。这是它的样子

Shortcut for environment opens start and end tag for align environment (Using imap)
The above action also initiates a counter variable, sets it to 1
If counter is 1, every equals sign I enter should be entered as an &=.
Shortcut to force counter to zero when I move out of the environment. (Using imap)

我想知道是否有更简单的方法来解决这个问题。这只是一个例子。这里的主要思想是让 vim 具有环境意识。

期待您的建议。

最佳答案

我通常在事后解决这类问题。例如,我用普通的 = 写它标志,然后在视觉上选择该区域并使用 :s/=/\&=/g .如果您想在事后对“环境”执行多项操作,您可以创建一个函数并触发一个键来执行它。例如:

vnoremap <leader>la :call <SID>latexAlign()<cr>

function! s:latexAlign() range
exe ":'<,'>s/=/\&=/g"
" add more stuff here...
endfunction

但是,我认为您的解决方案更好,以防您稍后返回并对其进行编辑。 vim 中的 htmlcomplete 文件是这样处理这种情况的:
let stylestart = searchpair('<style\>', '', '<\/style\>', "bnW")
let styleend = searchpair('<style\>', '', '<\/style\>', "nW")
if stylestart != 0 && styleend != 0
if stylestart <= curline && styleend >= curline
let start = col('.') - 1
let b:csscompl = 1
while start >= 0 && line[start - 1] =~ '\(\k\|-\)'
let start -= 1
endwhile
endif
endif

您可以看到它如何使用 searchpair 来确定它是否在 <style></style> 之内。标签。见 :help searchpair()想要查询更多的信息。

关于LaTeX 环境中的 Vim 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11832324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com