Qual è la modalità di selezione e quando è rilevante utilizzarla?


37

Ho premuto accidentalmente ghin modalità normale e ho avviato una selezione, quindi ho cercato il documento e ho trovato :h Select-mode.

Da quanto ho capito, la modalità di selezione è vicina alla modalità visiva, tranne per il fatto che:

  • Digitando un carattere stampabile <CR>o <BS>eliminerà la selezione, avvierà la modalità di inserimento e sostituirà la selezione con l'input.
  • hjkl e altri movimenti in modalità normale o visiva non estenderanno la selezione a meno che non abbiano il prefisso <Shift>
  • <CTRL-O>e <CTRL-G>passerà alla modalità visiva.
  • Il documento dice anche quanto segue, che se ho capito bene significa che è possibile fare una selezione lineare che viene quindi trattata in modo caratteristico:

    Quando si utilizza un operatore in modalità Seleziona e la selezione è lineare, le linee selezionate vengono gestite, ma come nella selezione caratteriale. Ad esempio, quando un'intera linea viene eliminata, può successivamente essere incollata a metà linea.

Sono un po 'confuso perché non capisco perché questa modalità sia stata creata: tutto quello che posso vedere è che è meno conveniente della modalità visiva e non offre più funzionalità.

Inoltre, le ricerche che ho effettuato danno tutti risultati sull'esecuzione della selezione in modalità visiva ma non trattano la modalità di selezione.

Quindi le mie domande sono:

  • Perché è stata creata la modalità di selezione?
  • Quali sono i suoi vantaggi rispetto alla modalità visiva?
  • Che cos'è un caso d'uso in cui è più interessante utilizzare la modalità di selezione?

MetaNote Non ho idea di quale tag sia rilevante per questa domanda, sentiti libero di ripetere la stampa se necessario.


Per me, questo suona come quello che ti aspetteresti dalla maggior parte degli editor della GUI. (Selezionare una linea non significa che andrà a una nuova linea quando si incolla, MAIUSC + frecce la estende, digitando sostituisce la selezione, tutto ciò che mi aspetterei, diciamo, blocco note).
muru,

@muru: sono d'accordo che ricorda questo tipo di editor ma significa che questa modalità sarebbe stata implementata solo per soddisfare alcuni utenti che vorrebbero usare Vim come un povero editor di testo? A me sembra piuttosto strano.
statox

in realtà, quella proprietà incollare è utile in alcuni casi. Sono sicuro che qualcuno ha pubblicato una domanda su come incollare qui. E per quanto riguarda la sovrascrittura, ciò consente di risparmiare una sequenza di tasti (non è necessario premere c), quindi a seconda di ciò che si desidera fare, selezionare la modalità potrebbe essere utile. Peccato che continuo a dimenticarmene.
muru,

Proverò a trovare questa domanda allora. Per la sovrascrittura non mi sento davvero come se csi trattasse di una sequenza di tasti salvata perché la selezione non è conveniente come in modalità visiva (poiché non è possibile utilizzare eo iwdirettamente).
statox

1
Hai ragione: quando 'selectmode'contiene mousee 'mouse'contiene un flag per la modalità corrente, la selezione con il mouse avvierà la modalità di selezione (secondo il documento).
statox

Risposte:


23

L'intero punto della modalità di selezione è fornire un comportamento di selezione simile a quello utilizzato negli editor convenzionali.

Sulla stessa nota, c'è mswin.vim che cambia un sacco di opzioni e mappature per far sentire Vim come un editor convenzionale.

Posso solo supporre che quelli siano stati aggiunti per compiacere un sottoinsieme di utenti Vim, probabilmente al momento in cui Vim è stato portato su Windows (posso sentire un po 'di disprezzo per Windows nel documento).

Ad ogni modo, selezionare la modalità è essenziale per snippet plugin di espansione e può essere abusato per divertimento e profitto:

nnoremap § *``gn<C-g>
inoremap § <C-o>gn<C-g>
snoremap <expr> . @.

2
Penso che sia abbastanza sorprendente portare Vim su Windows e creare questo tipo di modalità per soddisfare gli utenti: se volessero un editor "classico", perché dovrebbero usare Vim? Ma sembra essere l'unica spiegazione quindi ... Inoltre non capisco davvero il profitto delle tue mappature: per quanto ho capito selezionano la parola sotto il cursore in modalità di selezione, una volta che hai fatto perché è così utile?
statox

1
Dopo aver selezionato la parola, digitare qualcosa, quindi premere §per selezionare la ricorrenza successiva, digitare qualcos'altro, quindi premere di §nuovo per selezionare la ricorrenza successiva e così via. È possibile premere .per ripetere l'ultimo inserimento. È una variante della "formula punto".
romainl,

Ancora non capisco. In che modo il comportamento di selezione assomiglia di più agli editor convenzionali?
still_dreaming_1,

7
@ still_dreaming_1, in un editor convenzionale, digita fooe selezionalo. Non è necessario premere alcun tasto per sostituire ciò che è stato selezionato, vero? Questo è ciò che emula la modalità di selezione.
Romainl,

1
@romainl che cos'è quel carattere "doppia S" che stai digitando? Come si digita quel personaggio?
Michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.