Digamos que temos o seguinte código:
function test() {
const a = {<HERE>}; // `<HERE>` is the caret position
}
Quando enter
pressionado, os espaços em branco à esquerda são adicionados conforme o esperado:
function test() {
const a = {
<HERE>};
}
Quando o próximo enter
for pressionado:
function test() {
const a = {
<HERE>};
}
Como voltar à linha anterior sem perder os espaços em branco à esquerda? Quando pressiono <C-o>
e k
:
function test() {
const a = {
<HERE>
};
}
Parece que não depende do tipo de arquivo. Tenho o mesmo comportamento em arquivos TypeScript e Rust (não verifiquei outros tipos).
O comportamento que você descreve é intencional e muito alinhado com a ideia de usar o modo de inserção apenas para... inserir texto. Afinal, ninguém quer espaços em branco indesejados em seus arquivos, certo?
O que você está realmente tentando fazer é expandir o par de chaves ao redor do cursor, a partir do estado A:
para o estado B:
tudo isso sem sair do modo de inserção.
Pressionar
<CR>
duas vezes e depois mover o cursor para a linha acima não é uma boa abordagem porque não há nada naquela linha e o melhor quek
você pode fazer é mover o cursor para a coluna 1.O método adequado é…
pressione
<CR>
uma vez para colocar a chave de fechamento em sua própria linha:abra uma nova linha acima da linha atual com
:help O
, que respeita as regras de recuo atuais:Todas as sequências de comando a seguir fazem o trabalho de maneiras ligeiramente diferentes:
A justificativa para não deixar espaços em branco foi abordada na resposta de romainl . A maneira usual de forçar o recuo da linha atual é pressionar Ctrl-Fno modo Inserir.
Isso depende um pouco do tipo de arquivo, pois só funciona se
!^F
fizer parte da'indentkeys'
opção do buffer. Está lá por padrão (veja:help 'indentkeys'
) e, caso contrário, você pode adicioná-lo com:set indentkeys+=!^F
.Outra maneira de corrigir o recuo é usar o
=
comando do modo Normal depois de escrever algo.Recuo é um tópico muito amplo e abordado por
:help indent.txt
.