如何在 vim 中进行键绑定,让用户插入,重复插入?
How to make a keybind in vim, that lets the user insert, the repeats the insertion?
我想制作一个键绑定,让用户在插入模式下键入内容,然后转到另一行,并将用户键入的内容放在那里。这样做的目的是为了 LaTeX \begin
和 \end
。这是我目前所拥有的:
autocmd Filetype tex inoremap `d \begin{}<CR><++><CR>\end{}<esc>2kf{a
最后,a
让用户在 \begin
字段中输入,我想这样做,当我退出插入模式时,我输入的内容会被放入 \end
字段。老实说,我不知道该怎么做。感谢任何帮助。
这对于单个映射来说相当困难。
如果你真的想自己动手,我认为我可以在这里建议的最简单的方法是提示用户输入环境类型(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()
此处更好的方法是使用 代码段引擎。
支持多个重复字段通常非常容易,您甚至可以在代码段引擎中为字段设置默认值。
例如,在 UltiSnips 中,您可以使用以下代码段:
snippet "\?b(egin)?" "begin{} / end{}" br
\begin{${1:something}}
${0:${VISUAL}}
\end{}
endsnippet
这实际上是一个 standard snippet you can find in the honza/vim-snippets 库。
停止这种疯狂并使用以下所有这些:
- vim-snippets
- UltiSnips
- 最重要的是,VimTex。
我想制作一个键绑定,让用户在插入模式下键入内容,然后转到另一行,并将用户键入的内容放在那里。这样做的目的是为了 LaTeX \begin
和 \end
。这是我目前所拥有的:
autocmd Filetype tex inoremap `d \begin{}<CR><++><CR>\end{}<esc>2kf{a
最后,a
让用户在 \begin
字段中输入,我想这样做,当我退出插入模式时,我输入的内容会被放入 \end
字段。老实说,我不知道该怎么做。感谢任何帮助。
这对于单个映射来说相当困难。
如果你真的想自己动手,我认为我可以在这里建议的最简单的方法是提示用户输入环境类型(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()
此处更好的方法是使用 代码段引擎。
支持多个重复字段通常非常容易,您甚至可以在代码段引擎中为字段设置默认值。
例如,在 UltiSnips 中,您可以使用以下代码段:
snippet "\?b(egin)?" "begin{} / end{}" br
\begin{${1:something}}
${0:${VISUAL}}
\end{}
endsnippet
这实际上是一个 standard snippet you can find in the honza/vim-snippets 库。
停止这种疯狂并使用以下所有这些:
- vim-snippets
- UltiSnips
- 最重要的是,VimTex。