What was your first text editor when you started using Linux/Unix? Mine was pico. It was very easy to get started with and quite similar to nano. Then I moved to emacs and sticked with it for a long while. Eventually, I’ve switched to vim (or neovim), and that’s what I have been using until now.

Well, the thing about text editor or may be this also applies to many other things, you’re only familiar with features that you constantly use. This means I only know a small subsets of what vim can do.

Today I came across a problem (or a feature) in vim running on FreeBSD. The issue with the automatic string replacement - everytime I type or copy string contains 256, it’s automatically replaced by <t_CO>.

For example, in the following text file AES256 is replaced by AES<t_CO>.

zabbix_agent_psk_key: !vault |
          $ANSIBLE_VAULT;1.1;AES<t_CO>

I didn’t know why! I tried to search for helps on Google a few times with hit and miss. Then, the last search pointed me to the right direction.

The problem was caused by a variable defined in vim configuration: ~/.vimrc. This can be confirmed by searching for t_CO in that file.

❯❯❯ rg t_CO ~/.vimrc
31:set t_CO=256                         "Use 256 colors. This is useful for Terminal Vim.

According to brammool, the name of the variable to be set in ~/.vimrc should be t_Co not t_CO!

Let’s fix this by updating the variable in .vimrc to t_Co.

On FreeBSD, sed command is slightly different to sed on Linux. I have to pass an empty string ('') after -i to indicate that I don’t want to make a backup file for the original one.

❯❯❯ sed -i '' 's/t_CO/t_Co/g' ~/.vimrc

Let’s verify this:

❯❯❯ rg 't_C[o|o]' ~/.vimrc 
31:set t_Co=256                         "Use 256 colors. This is useful for Terminal Vim.

Restart vim and 256 no longer gets replaced by <t_CO>!

Read more: