Co to jest tryb wyboru i kiedy należy go używać?

37

Przypadkowo nacisnąłem ghw trybie normalnym i rozpocząłem selekcję, więc sprawdziłem dokument i znalazłem :h Select-mode.

Z tego, co rozumiem, tryb wyboru jest zbliżony do trybu wizualnego, z tym wyjątkiem, że:

  • Wpisanie znaku do wydruku <CR>lub <BS>spowoduje usunięcie zaznaczenia, uruchomienie trybu wstawiania i zastąpienie zaznaczenia wprowadzeniem.
  • hjkl a inne ruchy w trybie normalnym lub wizualnym nie rozszerzają zaznaczenia, chyba że są poprzedzone <Shift>
  • <CTRL-O>i <CTRL-G>przejdzie w tryb wizualny.
  • Dokument mówi również następujące, co jeśli dobrze rozumiem, oznacza, że ​​można dokonać wyboru linii, które są następnie traktowane znakowo:

    Gdy używasz operatora w trybie Select, a zaznaczenie przebiega wzdłuż linii, wybrane linie są obsługiwane, ale jak w przypadku wyboru znakowego. Na przykład po usunięciu całej linii można ją później wkleić w połowie linii.

Jestem trochę zdezorientowany, ponieważ nie rozumiem, dlaczego ten tryb został utworzony: widzę tylko, że jest mniej wygodny niż tryb wizualny i nie oferuje więcej funkcji.

Wszystkie wyszukiwania, które przeprowadziłem, dają wyniki dotyczące wyboru w trybie wizualnym, ale nie traktują trybu wyboru.

Więc moje pytania to:

  • Dlaczego utworzono tryb wyboru?
  • Jakie są jego zalety w porównaniu do trybu wizualnego?
  • Co to jest przypadek użycia, w którym bardziej interesujące jest użycie trybu wyboru?

MetaNote Nie mam pojęcia, który znacznik jest istotny dla tego pytania, w razie potrzeby możesz zmienić tag.

statox
źródło
Dla mnie to brzmi jak można by oczekiwać od większości edytorów GUI. (Wybranie linii nie oznacza, że ​​podczas wklejania przejdzie do nowej linii, klawisze Shift + strzałki wydłużają ją, pisanie zastępuje zaznaczenie, wszystko, czego oczekiwałbym od, powiedzmy, notatnika).
muru
@muru: Zgadzam się, że przypomina to tego rodzaju edytor, ale czy oznacza to, że ten tryb zostałby wdrożony tylko po to, aby zadowolić niektórych użytkowników, którzy chcieliby używać Vima jako słabego edytora tekstu? To wydaje mi się dość dziwne.
statox
w rzeczywistości ta właściwość wklejania jest przydatna w niektórych przypadkach. Jestem pewien, że ktoś opublikował tutaj pytanie dotyczące wklejania w ten sposób. A jeśli chodzi o nadpisywanie, to oszczędza naciśnięcie klawisza (nie musisz naciskać c), więc w zależności od tego, co chcesz zrobić, tryb wyboru może być przydatny. Szkoda, że ​​ciągle o tym zapominam.
muru
Spróbuję znaleźć to pytanie. W przypadku nadpisywania nie wydaje mi się, aby czapisano naciśnięcie klawisza, ponieważ wybór nie jest tak wygodny, jak w trybie wizualnym (ponieważ nie można go użyć eani iwbezpośrednio).
statox
1
Masz rację: kiedy 'selectmode'zawiera mousei 'mouse'zawiera flagę dla bieżącego trybu, wybranie myszą rozpocznie tryb wyboru (zgodnie z dokumentem).
statox

Odpowiedzi:

23

Cały punkt trybu selekcji polega na zapewnieniu zachowania selekcji podobnego do tego stosowanego w konwencjonalnych edytorach.

Z tej samej notatki jest mswin.vim, który zmienia wiele opcji i mapowań, aby Vim poczuł się jak tradycyjny edytor.

Mogę tylko założyć, że zostały dodane, aby zadowolić część użytkowników Vima, prawdopodobnie w czasie, gdy Vim był przenoszony do systemu Windows (w dokumencie czuję lekceważenie systemu Windows).

W każdym razie tryb wyboru jest niezbędny do rozszerzenia wtyczek i może być wykorzystywany do zabawy i zysków:

nnoremap § *``gn<C-g>
inoremap § <C-o>gn<C-g>
snoremap <expr> . @.
romainl
źródło
2
Myślę, że dość zaskakujące jest portowanie Vima w systemie Windows i stworzenie tego rodzaju trybu, aby zadowolić użytkowników: Jeśli chcieli mieć „klasyczny” edytor, dlaczego mieliby wtedy używać Vima? Ale wydaje się, że jest to jedyne wytłumaczenie, więc ... Tak naprawdę nie rozumiem zysków z twoich mapowań: o ile rozumiem, wybierają słowo pod kursorem w trybie wyboru, kiedy już to zrobisz, dlaczego tak jest? przydatny?
statox
1
Po wybraniu słowa wpisz coś, a następnie naciśnij, §aby wybrać następne wystąpienie, wpisz coś innego, a następnie naciśnij §ponownie, aby wybrać następne wystąpienie i tak dalej. Możesz nacisnąć, .aby powtórzyć ostatnie wstawienie. Jest to wariant „formuły kropkowej”.
romainl
Nadal nie rozumiem. W jaki sposób zachowanie selekcji przypomina bardziej konwencjonalne edytory?
still_dreaming_1
7
@ still_dreaming_1, w tradycyjnym edytorze wpisz fooi wybierz go. Nie musisz naciskać żadnego klawisza, aby zastąpić to, co zostało wybrane, prawda? Właśnie to emuluje tryb wyboru.
romainl
1
@romainl, co wpisujesz? „double S”? Jak wpisujesz ten znak?
Michael