Compreender a interação entre as opções visual, recuo automático e colar

Nov 11 2020

Vamos começar a formar este arquivo fonte C ++ com defeito

#include <vector>
int main() {
    std::vector<std::vector<int>> v{
            1,2},
            9,3},
            4,2}
    };
}

que é um estado transitório legítimo se você acabou de copiar esses 6 números de um arquivo de texto separado por espaço com duas colunas.

A última etapa é adicionar colchetes de abertura nas três linhas, então você pode colocar o cursor no 1e depois ir Ctrl-v2jI{Escape. Fazendo isso, no entanto, você acaba com isso,

#include <vector>
int main() {
    std::vector<std::vector<int>> v{
        {1,2}
            1,1}
            1,2}
    };
}

pois o recuo automático puxou a linha onde o cursor inicialmente está para a esquerda (por algum motivo será explicado na questão anterior ), ou seja , apagou o texto, saindo assim do modo visual do bloco .

No entanto, se essa sequência de teclas for usada depois :set paste, a edição é a desejada.

Gostaria de saber como essas coisas funcionam juntas.

Respostas

Enlico Nov 11 2020 at 00:03

Parece que o motivo pelo qual :set pasteresolve o problema é que, entre outras coisas, desativa cindente cindentfaz uso do cinkeysvalor padrão de, que dispara a reindentação se alguém digitar {(ou outros caracteres) no início da linha.