Toggling Vim Latex-Suite's Macros
Image Attribution:
Bert Hymans. "Vim the editor that's also a ...". http://www.flickr.com/photos/heymans/8903973272/. Under a Creative Commons Attribution-NonCommercial-ShareAlike 2.0 License at http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en (NOT CC-BY!).
June 8, 2013
latex, vim
EFI
while in Insert mode will result in the following.
\begin{equation}
\label{<++>}
\end{equation}<++>
The <++>
are little tags that Vim automatically jumps to and deletes (via Ctrl-j
), allowing the user to write an equation in the equation environment and then immediately jump to writing a label and then immediately jump out of the equation environment without extraneous key movements. See here.
Unfortunately this can be a huge pain at times. I was trying to write the word “DELETE” in a LaTeX document and every time I would suddenly would be presented with “DEL–gigantic blob of table environment text here–.” It was rather annoying.
The LaTeX-suite comes with the Vim global variable “g:Imap_FreezeImap,” which if is “let”ed to 1, will disable these macros. I was looking to map these to a nice set of keys to allow for easy toggling back and forth.
Alas, it doesn’t seem that there’s a way of toggling variables (as opposed to Vim options) without using Vimscript functions. So I looked, with every intention of spending as little time and effort as possible, at a few tutorials of vimscript. As soon as I learned how to declare functions and negate variables, I figured I should be set.
So naturally I came up with
function ToggleFreezeImap()
let g:Imap_FreezeImap = !g:Imap_FreezeImap
endfunction
to add to my vimrc
. Unfortunately this didn’t work. I spent some time puzzling over it. I changed into a conditional if-else statement. I looked up using global variables in conditional statements. Nothing seemed to click.
vimrc
. So I needed something like
let g:Imap_FreezeImap = 0
function ToggleFreezeImap()
let g:Imap_FreezeImap = !g:Imap_FreezeImap
endfunction
noremap :call ToggleFreezeImap()
.
So that concludes my first tentative, brief (VERY brief) foray into Vimscript.