Jak zablokować zamień kod w trybie wizualnym?

26

Mam listę elementów, w których chcę zastąpić pierwsze dwa znaki:

a) item 1
b) item 2
c) item 3

Jaki jest najszybszy sposób na to:

* item 1
* item 2
* item 3

Mam podejście w trybie wizualnym (Ctr-v, jjj, ale muszę wykonać dwa polecenia zamiany. Iirc, tę zamianę można wykonać za pomocą 1 polecenia)

poseid
źródło
1
Jak .,.+2s/^../*/(lub równoważnie w selekcji wizualnej)? Dlaczego dwa polecenia zamiany? 2czastąpi dwa znaki.
muru
czasami zmienia się tylko pierwsza linia w selekcji wizualnej, powtarzając następnie za pomocą. dla innych linii wszystko popsuło.
poseid
2
@poseid Czy masz w zwyczaju naciskać Ctrl-Czamiast Esc? Zapobiega to między innymi wprowadzaniu zmian do każdej linii zaznaczenia bloku wizualnego.
tommcdo
to może być główny powód zamieszania! dzięki!
poseid

Odpowiedzi:

26

Wizualny wybór bloku:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Podstawienie:

:,+2s/^.\{2}/*

Wzór na kropkę:

cE*<Esc>
j.
j.
romainl
źródło
1
Szalone podejście: używając textobj-word-column.vim możesz zrobić ciC*<esc>i zrobić. Uwaga: ta wtyczka jest wtyczką typu „zrób co mam na myśli”, więc zawiesza się w nieoczekiwanych miejscach i sposobach, ale wtyczka jest nadal przydatna w niektórych łatwych przypadkach, takich jak ten.
Peter Rincker,
ciekawa formuła normalna i kropkowa!
poseid
3
Zauważ, że w przypadku rozwiązania Visual-block zobaczysz tylko tekst wpisywany w pierwszym wierszu. Po trafieniu <Esc>wypełni pozostałe linie.
tommcdo
Wszelkie sugestie dotyczące sposobu zapamiętania, że ​​c zastąpi? Jak ctrl + D (własny)
Jordan Mackie
2
@JordanMackie cto „zmiana”.
romainl
17

Oto bardziej efektywny sposób:

  1. Po najechaniu kursorem na pierwszą pozycję i pierwszą literę ( 0) wprowadź tryb wizualny „blokowy” Ctrl+ vi wybierz pierwszą kolumnę bieżącego akapitu o }(jeśli lista jest zakończona nową linią), w przeciwnym razie użyj innych metod, takich jak klawisze strzałek (aby przenieść wokół zaznaczenia) lub wyszukiwanie wzorców, /c)gdzie cjest twój ostatni element).
  2. Przejdź do ostatniego symbolu listy za pomocą ki l(lub używając klawiszy strzałek ), aby wybrać dwie kolumny, które chcesz zmienić.
  3. Zmień zaznaczony tekst, naciskając ci wpisz symbol punktora ( *), a następnie naciśnij Esc.

Działa bardziej wydajnie, szczególnie na dłuższych listach.

kenorb
źródło