W wierszu polecenia naciśnij, <C-u>
a następnie wpisz @*
i wprowadź.
<C-u>
usunie zakres wizualny '<,'>
, który został wstawiony automatycznie, jeśli jakiś tekst zostanie wizualnie zaznaczony.
:@*
wykona zawartość *
rejestru, która zawiera wszystko, co jest aktualnie wybrane wizualnie.
Nawet jeśli zaznaczony / podświetlony tekst znajduje się w przeglądarce (Firefox, Chrome, ...), będzie działał, *
rejestr pozwoli ci na bezpośredni dostęp do niego w vimie.
Jeśli tekst jest zaznaczony w buforze vim, innym rozwiązaniem jest skopiowanie go w nazwie rejestru, na przykład do rejestru poprzez wpisywanie "ay
.
Następnie w wierszu polecenia wpisz: <C-r>a
i wpisz.
Ctrl+ rda ci rodzaj podpowiedzi reprezentowanej przez znak "
(więcej informacji można przeczytać :h c_Ctrl-r
).
W tym nowym monicie, jeśli podasz nazwę rejestru, jego zawartość zostanie wstawiona w linii poleceń, gdzie będziesz mógł go edytować przed wykonaniem.
Poza tym, jeśli skopiujesz jakiś tekst bez podawania rejestru, będzie on dostępny z rejestru bez nazwy ” .
Załóżmy, że masz plik vimscript w pliku i chcesz go szybko pobrać, możesz skopiować za pomocą Y
, a następnie za pomocą: :<C-r>"
i wpisać w wierszu poleceń .
Wreszcie, jeśli użyjesz tego ostatniego rozwiązania, jest tylko problem, o którym musisz wiedzieć.
Jeśli pojawi się dziwny znak w linii poleceń jak ten ^M
, to jest notacja daszek powrotu karetki. Powinieneś go usunąć, w przeciwnym razie prawdopodobnie wystąpi błąd.
Podsumowując:
- skopiuj swoją linię vimscript za pomocą
Y
- przejść do trybu poleceń za pomocą
:
- naciśnij,
<C-r>
aby przejść do monitu rejestrów
- wpisz,
"
aby wywołać rejestr bez nazwy
- naciśnij klawisz Backspace, aby usunąć
^M
znak
- i naciśnij Enter.
@*
, dzięki!: <C-r>a
go użyć, tak naprawdę działał dobrze :) Myślę, że vim czyta te^M
znaki jako linię powrotną - i wykonuje każdą z nich jako osobną linię / polecenie?Właściwie robię to trochę inaczej, po prostu dokonuję edycji w moim vimrc i ponownie go za każdym razem piszę. (Mam kaskadowy zestaw plików vimrc, więc pozwala mi to na zmianę dowolnego z nich).
źródło
Bardziej bezpośrednio do pytania niż do mojej innej odpowiedzi, możesz zdefiniować odwzorowanie w ten sposób (w
nnoremap
przypadku braku wyboru, po prostu wykonaj bieżącą linię;vnoremap
dla gdy tryb wizualny jest aktywny):W obu przypadkach „bieżącą linią” jest
:execute
d, więc w wersji wizualnej:execute
przechodzisz jedną linię po drugiej poprzez selekcję wizualną.Jak stwierdzono w innej odpowiedzi,
<C-u>
usuwa specyfikację zakresu, która pojawia się w wierszu poleceń podczas :wpisywania. Te|
znaki muszą być uciekł, bo w przeciwnym razie są one interpretowane jako koniecvnoremap
polecenia.Można to również przekształcić w funkcję pozwalającą na pozbycie się części gimnastyki ucieczkowej, ale w tej chwili nie wydaje mi się to wielką wygraną. Zasadniczo byłby to vnoremap rozwinięty do wielu linii i edytowany
call
z zakresem lub nie zależnym od trybu mapowania [nv].źródło