【问题标题】:How to make a keybind in vim, that lets the user insert, the repeats the insertion?如何在vim中进行键绑定,让用户插入,重复插入?
【发布时间】:2020-09-05 21:39:35
【问题描述】:

我想创建一个键绑定,让用户在插入模式下键入内容,然后转到不同的行,并将用户键入的内容放在那里。这样做的目的是为了 LaTeX \begin\end。这是我目前所拥有的:

autocmd Filetype tex inoremap `d \begin{}<CR><++><CR>\end{}<esc>2kf{a

最后,a 让用户在 \begin 字段中输入,我想这样做,以便当我退出插入模式时,我输入的内容被放入 \end 字段中。老实说,我不知道该怎么做。任何帮助表示赞赏。

【问题讨论】:

  • 考虑使用 Vi and Vim 堆栈以了解有关 Vim 的问题!
  • @filbranden 不。这是这里的主题。

标签: vim latex vi keymapping


【解决方案1】:

这对于单个映射来说是相当困难的。

如果你真的想自己动手,我认为我可以在这里建议的最简单的方法是提示用户输入环境类型(使用input()),然后在插入块时使用该名称两次。

这应该可行:

function! LatexEnvironment()
    let name = input('Environment name: ')
    return "\\begin{".name."}\r\\end{".name."}\<C-o>O"
endfunction
autocmd Filetype tex inoremap <expr> `d LatexEnvironment()

这里更好的方法是使用 sn-p 引擎

支持具有重复的多个字段通常非常容易,您甚至可以为 sn-p 引擎中的字段设置默认值。

例如UltiSnips,可以使用如下sn-p:

snippet "\\?b(egin)?" "begin{} / end{}" br
\begin{${1:something}}
    ${0:${VISUAL}}
\end{$1}
endsnippet

实际上是 standard snippet,您可以在 honza/vim-snippets 库中找到。

【讨论】:

    【解决方案2】:

    停止这种疯狂并使用以下所有这些:

    【讨论】:

    • 在 TeX + LaTeX 文件上使用 vimtex 的好建议!它是 Vim 中最好的插件之一!
    猜你喜欢
    • 2012-12-11
    • 2018-08-01
    • 2012-11-18
    • 2013-06-24
    • 2013-04-14
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多