Estou em um sistema FreeBSD minimalista e preciso usar o editor vi embutido para editar arquivos. Para ser específico, isso não é vim, ou vim-tiny ou outra substituição. É o editor nvi "4BSD bug-for-bug compatível".
Funciona quase como esperado. A página man diz que control-T e control-D irão recuar/desindentar de acordo com shiftwidth
. Control-T funciona, mas control-D não. Na verdade, ele insere o caractere ^D no arquivo.
Se eu colocar o vim no sistema, control-T e control-D funcionam conforme o esperado, então não é um problema do terminal interpretar mal a chave. O próprio Vi não está interpretando o controle-D.
Alguém se depara com isso? Uma solução? Usar o vim não é uma opção.
tl;dr;
vim
não évi
.Em
vi
, você deve usar Control-T em vez de Tab para recuar uma linha.Se você achar difícil treinar novamente, poderá adicionar um mapeamento de modo de entrada de Tab para Control-T:
No real
vi
e nonvi
clone (usado no FreeBSD), um control-D apagará os caracteres de autoindentação até o limite anterior de "shiftwidth". Ele não apagará os caracteres Tab ou Space que você digitou manualmente, pressionando Control-I, Tab ou Space.Isso faz parte dessa compatibilidade bug-a-bug.
Há uma longa discussão sobre isso no comentário na fonte, em
/usr/src/contrib/nvi/vi/v_txt.c
.␄
A entrada é tratada como um caractere literal , a menos queai
o modo esteja ativado e o último caractere inserido tenha sido um caractere de recuo automático (por Control+ Tou recuo automático em uma nova linha).O comentário também observa que
vi
os Control+ Te Control+ do original Deram ainda mais restritos, afetando apenas o recuo se fossem a primeira coisa digitada no modo de inserção.