Recently I installed Jailkit on
Ubuntu 12.04 and then tried to use the
vim editor to edit files as the
jailed user (specifically a user jailed with the
bash shell) and
vim was behaving oddly.
The colors on the terminal were just a gray (default color) and a bold white. After a little digging I found out this is how
vim does syntax highlighting when it thinks that only two colors are available.
Also, I was having trouble with the arrow keys not working – I could move around with
HJKL but there also seemed to be lag and
vim was hanging or would hang sometimes and was not responsive.
I typed in
set terminal and it told me
ansi which is the default, “dumb” terminal. You can change
vim to another terminal type, like
xterm a few ways.
:set term=xtermand that should do it
- Edit your
.vimrcfile (in your home directory) and add
- Before launching
export TERM=xtermto set an environmental variable
- Add that last command (
export TERM=xterm) into one of your startup files like ‘~/.profile
This fixed the issue with the arrow keys, the lag and hanging, but I still only had two colors. After many hours of digging I realized that with Jailkit on Ubuntu even if you do
jk_init -v /home/jail editors to install
emacs you still get this problem. I did a stack trace on
vim and even turned on debugging and logging and still could not find the issue.
After realizing it was a terminal detection issue and looking though how Unix and Linux determine the terminal type I noticed, that at least on Ubuntu, the files it needs for that operation of terminal capability detection are in the
terminfo directory at
/lib/terminfo/ – this may be a different directory on other distributions / flavors of linux – the directory should exist and have a lot of subdirectories and not be empty. Once you find the right directory you can copy it to inside the jail using the
jk_cp command, so if your jail is in
/home/jail you can use:
jk_cp -v -f /home/jail /lib/terminfo/