I am using :set textwidth=80
to make the Vim editor do hard wrapping automatically. However, sometimes for certain lines within a file (e.g. tables in LaTeX), I do not want Vim to do any hard wrapping automatically. Is there a way to mark certain lines to disable hard wrapping in Vim? Or automatically :set textwidth=0
just for specified lines?
There's nothing out-of-the-box, but you can build a solution with an :autocmd <buffer>
on the CursorMoved,CursorMovedI
events. On each move of the cursor, you have to check whether you're currently in one of those "certain lines", and modify the local 'textwidth'
option accordingly:
autocmd CursorMoved,CursorMovedI <buffer> if IsSpecialLine() | setlocal textwidth=0 | else | setlocal textwidth=80 | endif
Put this into ~/.vim/after/ftplugin/tex.vim
. (This requires that you have :filetype plugin on
; use of the after directory allows you to override any default filetype settings done by $VIMRUNTIME/ftplugin/tex.vim
.) Alternatively, you could define an :autocmd FileType tex autocmd ...
directly in your ~/.vimrc
, but this tends to become unwieldy once you have many customizations.
For the IsSpecialLine()
function, you probably need to match a regular expression on the current line (getline('.') =~# "..."
). If you can identify the "certain lines" through syntax highlighting, my OnSyntaxChange plugin can do all the work for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With