Dostosuj drugi koniec zaznaczenia wizualnego

14

Myślę, że pozwoliłoby to na wizualną funkcję selekcji vima, która przewyższałaby efektywność nawet myszy, zapewniając możliwość „przełączania” bieżącego zakończenia selekcji:

Ilustrowany ( |powinien reprezentować kursor (Vim ma operować po lewej stronie znaku, na którym się znajduje) i [text]reprezentuje zaznaczony tekst, po prostu udawaj, że zajmują zerową szerokość. Tło przestrzeni między [ ]wydaje się szare, a znak natychmiast następującego po |to zielona):

Zacząć od

Some |text here
Some second line of text
Some more text in the third line 

Naciśnij v2j; uwaga: mznak jest zawarty w zaznaczeniu (jest teraz podświetlony kursorem):

Some [text here
Some second line of text
Some |m]ore text in the third line 

Naciśnij 10l:

Some [text here
Some second line of text
Some more text |i]n the third line 

W tym momencie mogę zdecydować, że chcę zacząć wybierać z innej lokalizacji. np. w tym "Some"w pierwszym wierszu.

Nie mam wyboru w typowym edytorze / IDE. Prawdopodobnie musiałbym przesunąć rękę do myszy, zwykle jest to zbyt bolesne, aby zaznaczyć tekst tradycyjnymi metodami, użycie przeskakiwania słów przez Ctrli przewijanie stron w górę nieco pomaga, ale bez względu na to, muszę to zrobić do jednego z moich końcowych punktów selekcji przed rozpoczęciem selekcji .

Tak więc w Vimie chciałbym mieć możliwość wzięcia mojego obecnego stanu i doprowadzenia go do tego, poprzez uderzenie w tajemnicę wiążącą:

Some [|text here
Some second line of text
Some more text i]n the third line 

Następnie mogę po prostu nacisnąć ^lub <Home>(oba robią to samo w tym przypadku, gdy nie ma wiodących białych znaków), aby je zmienić

[|Some text here
Some second line of text
Some more text i]n the third line 

Powiedzieć, że zmienię zdanie jeszcze raz , chcę ustawić drugi koniec!

[Some text here
Some second line of text
Some more text |i]n the third line 

Hit e:

[Some text here
Some second line of text
Some more text i|n] the third line 

Piękny! Dzięki temu wyborowi mogę teraz robić, co chcę dalej.

Więc co wiąże ta tajemnica?

Jeszcze bardziej potencjalnie wydajny byłby zestaw alternatywnych powiązań dla niektórych najczęściej używanych poleceń ruchu z innym rzędem klawiszy, a one (w trybie wizualnym) zawsze przesuwałyby drugi koniec zaznaczenia. Więc w tej operacji wyboru trybu wizualnego, gdyby klawisze ruchu dla drugiego końca zaznaczenia były ustawione na „yuio” (prawdopodobnie nie jest to dobry wybór, ponieważ trochę potrzebujemy, yale po prostu sobie radzimy) moglibyśmy pisać

v2j10l5ye

zamiast

v2j10lX^Xe

Hej, wiesz co, to nie jest nawet tak duża poprawa. Po prostu daj mi tę funkcję X. :)

Idealne odpowiedzi, których szukam:

  • Hej, spójrz w górę :help some_awesome_vim_feature_that_just_does_this
  • Hej, spójrz na https://github.com/awesome_user/vim_plugin_that_does_this
  • Hej, spójrz na :help vimscript_functions_that_allow_mutation_of_visual_selections

Jestem całkiem nowy w tej fascynacji Vimem, więc jestem bardzo zielony, jeśli chodzi o Vimscript, i szczerze mówiąc, chciałbym trzymać się z daleka od nauki innego języka, więc mam nadzieję, że nie będę zmuszony budować tego jako wtyczka.

Steven Lu
źródło
W porządku. Teraz nie wiem, co się tutaj dzieje (pytanie zostało tajemniczo przeniesione przez ninja z SO do SU), ale pierwotnie opublikowałem to na SO i naprawdę wolałbym, żeby tam zostało. Z całym szacunkiem dla nie-programistów, tylko programiści mogliby tak bardzo dbać o edycję tekstu. Oczywiście, wszyscy użytkownicy vima mogliby skorzystać z nauki, jak to może działać, po prostu myślę, że uzyskałoby więcej gałek ocznych i większą szansę na uzyskanie odpowiedzi tam, gdzie są twórcy wtyczek.
Steven Lu
Czy czasami czytasz :help? :help visual-modezawiera wszystkie informacje, których możesz potrzebować na temat trybu wizualnego, w tym o.
romainl
Czasami go czytam, ale prawdopodobnie zabrałoby mi to mniej więcej tyle samo czasu na wypisanie moich myśli. Jest to bardziej konkretne zadanie niż zgadywanie, jaki jest ciąg pomocy.
Steven Lu
Uczenie się jest lepsze niż zgadywanie. Odpowiedź heptytu nauczyła cię dwóch rzeczy, czy możesz je wymienić?
romainl
Tak, mam na myśli wiele rzeczy do nauczenia się, ale już zapomniałem, co Orobi kapitał O, ale zapamiętam o. Drugą rzeczą, o której mówisz, jest prawdopodobnie użycie :helpwięcej. I używałem go więcej niż na początku.
Steven Lu

Odpowiedzi:

49

Nie jestem pewien, czy rozumiem, czego chcesz, ale być może jest to:

:help v_o

Zasadniczo, gdy tekst jest podświetlony wizualnie, możesz nacisnąć oi przeskoczy on na drugi „koniec” obszaru wizualnego bez jego modyfikacji.

Heptyt
źródło
2
Cholera jasna, tak !!! To nawet lepsze niż się spodziewałem, jest już powiązane z jednym kluczem , więc tak Xnaprawdę jest wyżejo
Steven Lu
1
Pozwolę sobie również zauważyć, że kliknięcie prawym przyciskiem myszy (jeśli twój terminal jest skonfigurowany do przekazywania go do Vima) pozwoli inteligentnie dopasować najbliższy koniec bieżącego wyboru wizualnego do położenia kursora. To sprawia, że ​​jest to znacznie mniej wywołująca ból metoda dostosowywania obszaru wyboru, ponieważ nie odrzuca lokalizacji przeciwległego końca wyboru.
Steven Lu
@StevenLu: I tak nie jest wyrzucany. Możesz stuknąć oponownie i wrócić.
Heptite
@StevenLu To powinna być prawdopodobnie zaakceptowana odpowiedź, biorąc pod uwagę, że nie tylko rozwiązała twój problem, ma mnóstwo pozytywnych opinii, również wydarzyła się dokładnie to, czego potrzebowałem przy pierwszym wyniku Google, i jest właściwie jedyną odpowiedzią przesłaną przez kogokolwiek ...
Kingdon
Tak, myślę, że nigdy tego nie zaakceptowałem, ponieważ został opublikowany tak szybko, że nie mogłem tego robić w tym czasie, a od tej pory z radością korzystam z tej funkcji Vima od prawie pięciu lat, nigdy nie musząc sobie przypominać Kluczem jest, ponieważ jest bardzo łatwy do zapamiętania.
Steven Lu