I’ve been experiencing an irritating bug for a few weeks and I finally eliminated it by disabling matchparen.vim
The bug happens when I’m using vim in an ssh session (to a Linux machine) with GNU Screen or tmux (on the server) in iTerm2.app or Terminal.app on Mac OS X and editing PHP code. If I type “require dirname(__FILE__) .
“, then after typing the closing parenthesis, the screen gets corrupted such that it looks like I typed “require dirnam((__FILE_))
” (missing “e”). Hitting Control-L refreshes the screen of course, but it’s irritating nonetheless.
Yesterday, I got the bug to disappear by putting this in my ~/.vimrc.local
(I’m using Janus):
" vim's parenthesis highlighting causes screen corruption when vim is running " inside GNU screen or tmux? let loaded_matchparen = 1
I don’t know if this is a bug in matchparen.vim
or something else.
If I type slowly, it looks like after typing the closing parenthesis, both the opening and closing parenthesis are highlighted correctly. Things go haywire after typing a space after the closing parenthesis. It looks like it’s attempting to replace the highlighted open parenthesis with a normal parenthesis but it does it one cursor position to the left, resulting in the “e” in dirname getting overwritten with a parenthesis and the highlighted open parenthesis is still present next to it.
Here’s a screenshot: http://cl.ly/1E1I2X0t3e1F3c3F2I2J
If I understood more clearly what the problem is, then I’d try to fix it and submit a patch, but I’m not very knowledgable about terminal issues. If someone points me in the right direction, I might be able to come up with a patch…
I’ll be posting this to the vim_dev mailing list as well.
Here’s the post on the vim-dev mailing list
OK, I played around a bit more and I’ve reduced this to the smallest
possible case.
The root of the problem appears to be that Janus sets listchars with a
UTF-8 encoded Unicode character, namely U+00B7 or “MIDDLE DOT” which
is encoded as “0xc2 0xb7” in UTF-8.
My guess at this point would be that matchparen.vim has some code in
it that is not multi-byte aware.
Thank you for posting this! I’ve been having constant frustration with text corruption using tmux and vim for months, and it was my UTF-8 listchars that is apparently the trouble. I was getting to the point where I couldn’t trust anything outside of mvim when on my mac…much obliged!
Hey Aaron,
I’m glad to hear that it helped someone besides myself! Thanks for taking the time to write!
Marc