Qual é o modo de seleção e quando é relevante usá-lo?

37

Pressionei acidentalmente ghno modo normal e iniciei uma seleção; procurei o documento e o encontrei :h Select-mode.

Pelo que entendi, o modo de seleção está próximo ao modo visual, exceto que:

  • Digitar um caractere imprimível <CR>ou <BS>excluirá a seleção, iniciará o modo de inserção e substituirá a seleção pela entrada.
  • hjkl e outro movimento no modo normal ou visual não estenderá a seleção, a menos que sejam prefixados com <Shift>
  • <CTRL-O>e <CTRL-G>mudará para o modo visual.
  • O documento também diz o seguinte, que, se entendi corretamente, significa que é possível fazer a seleção linha a linha, que são tratadas a cada caractere:

    Ao usar um operador no modo Selecionar, e a seleção é no sentido de linha, as linhas selecionadas são operadas, mas como na seleção de caracteres. Por exemplo, quando uma linha inteira é excluída, mais tarde ela pode ser colada na metade da linha.

Estou um pouco confuso porque não entendo por que esse modo foi criado: tudo o que vejo é que é menos conveniente que o modo visual e não oferece mais recursos.

Além disso, as pesquisas que fiz deram resultados sobre a seleção no modo visual, mas não tratam o modo de seleção.

Então, minhas perguntas são:

  • Por que o modo de seleção foi criado?
  • Quais são as suas vantagens em comparação com o modo visual?
  • O que é um caso de uso em que é mais interessante usar o modo de seleção?

MetaNote Não tenho idéia de qual tag é relevante para esta pergunta, fique à vontade para marcar novamente, se necessário.

statox
fonte
Para mim, isso parece o que você esperaria da maioria dos editores de GUI. (Selecionar uma linha não significa que ela irá para uma nova linha ao colar, shift + setas a estendem, digitar substitui a seleção, tudo o que eu esperaria de, por exemplo, o bloco de notas).
muru
@ muru: Concordo que ele lembra esse tipo de editor, mas isso significa que esse modo teria sido implementado apenas para agradar a alguns usuários que gostariam de usar o Vim como um editor de texto ruim? Isso me parece muito estranho, na verdade.
statox
na verdade, essa propriedade de colagem é útil em alguns casos. Tenho certeza de que alguém postou uma pergunta sobre como colar aqui. E quanto à substituição, isso salva um pressionamento de tecla (você não precisa pressionar c); portanto, dependendo do que você deseja fazer, o modo de seleção pode ser útil. Pena que eu continuo esquecendo disso.
muru 28/09/15
Vou tentar encontrar essa pergunta então. Para a substituição, eu realmente não sinto que a ctecla seja salva porque a seleção não é tão conveniente quanto no modo visual (já que você não pode usar eou iwdiretamente).
statox
11
Você está certo: quando 'selectmode'contém mousee 'mouse'contém um sinalizador para o modo atual, selecionar com o mouse inicia o modo de seleção (de acordo com o documento).
statox

Respostas:

23

O ponto principal do modo de seleção é fornecer um comportamento de seleção semelhante ao usado nos editores convencionais.

Na mesma nota, há o mswin.vim que altera várias opções e mapeamentos para fazer o Vim parecer um editor convencional.

Só posso supor que eles foram adicionados para agradar um subconjunto de usuários do Vim, provavelmente no momento em que o Vim foi portado para o Windows (posso sentir algum desdém pelo Windows no documento).

De qualquer forma, o modo de seleção é essencial para os plug-ins de expansão de snippet e pode ser abusado por diversão e lucro:

nnoremap § *``gn<C-g>
inoremap § <C-o>gn<C-g>
snoremap <expr> . @.
romainl
fonte
2
Eu acho que é bastante surpreendente portar o Vim no Windows e criar esse tipo de modo para agradar os usuários: se eles queriam um editor "clássico", por que eles usariam o Vim? Mas parece ser a única explicação para isso ... Também não entendo realmente o lucro de seus mapeamentos: tanto quanto eu entendo, eles selecionam a palavra sob o cursor no modo de seleção, depois de fazer isso, por que útil?
statox
11
Depois que a palavra for selecionada, digite algo e pressione §para selecionar a próxima ocorrência, digite outra coisa e pressione §novamente para selecionar a próxima ocorrência e assim por diante. Você pode pressionar .para repetir a última inserção. É uma variante da "fórmula dos pontos".
romainl
Eu ainda não entendi. De que maneira o comportamento de seleção é mais parecido com os editores convencionais?
21111616
7
@ still_dreaming_1, em um editor convencional, digite fooe selecione-o. Você não precisa pressionar nenhuma tecla para substituir o que foi selecionado, precisa? É isso que o modo de seleção emula.
Romainl
11
@romainl o que é esse caractere "double S" que você está digitando? Como você digita esse personagem?
Michael