Acabei de descobrir o motivo e foi uma coleção de circunstâncias:
Primeiro de tudo, eu não sei exatamente por que, mas sudo
não estava pegando a variável de ambiente HOME
corretamente e usava a do usuário regular, então ela lia o .vimrc
de /home/user/.vimrc.
Para ver isso, eu publiquei:
user@hostname:~$ sudo bash
[sudo] password for user:
root@hostname:/home/user# echo $HOME
/home/user
Em segundo lugar, tenho a persistência de dobramento ativada no arquivo vimrc do meu usuário para armazenar a posição do cursor:
au BufWinLeave * mkview
au BufWinEnter * silent loadview
Isso faz com que toda vez que um arquivo seja editado, um arquivo de propriedades seja criado dentro da pasta $HOME/.vim/view
.
No meu caso, parece que tentei editar o arquivo sem sudo
pela primeira vez, então o arquivo dobrável foi criado como usuário regular:
user@hostname:~$ ll .vim/view/ | grep thunderbird.sh
-rw-rw-r-- 1 user user 2650 Aug 20 15:56 =+usr=+lib=+thunderbird=+thunderbird.sh=
Como a raiz usou /home/user
como $HOME
, o mesmo arquivo de dobragem foi (erroneamente) usado quando emitei sudo vim
e, por algum motivo que ignoro, provavelmente relacionado a internals do vim, se o arquivo dobrável for não pertence ao usuário de edição, o arquivo editado é aberto no modo ReadOnly.
Então, percebi que, se eu removesse o arquivo /home/user/.vim/view/=+usr=+lib=+thunderbird=+thunderbird.sh=
e depois tentasse editar usando sudo vim,
, não tive nenhum problema.
Então, no final da história, para corrigir essa situação, eu apenas editei /etc/sudoers
e adicionei esta linha:
Defaults always_set_home
Agora tudo funciona como esperado e posso usar sudo
de forma confiável novamente.