Często muszę wkleić coś do nowej linii w vimie. Zwykle robię to:
o<Esc>p
Który wstawia nowy wiersz i przełącza mnie w tryb wstawiania, potem wychodzi z trybu wstawiania i na koniec wkleja.
Trzy naciśnięcia klawiszy. Niezbyt wydajne. Jakieś lepsze pomysły?
Odpowiedzi:
Wkrótce potem
:help p
mówi:Niestety nie jest krótszy niż twoje obecne rozwiązanie, chyba że połączysz je z jakąś mapą klawiatury, jak zasugerowano w innej odpowiedzi. Na przykład możesz zmapować go na dowolny klawisz (nawet
p
):źródło
:pu[t]
umieści tekst w nowej linii po bieżącej linii,:pu[t]!
umieści tekst w nowej linii przed bieżącą linią. Odpowiednio poprawię odpowiedź. (Brawo za:help p
.):nmap p :pu<CR>
Opcje:
1) Służy
yy
do szarpania całej linii (łącznie ze znakiem końca linii).p
następnie wklei linię w nowej linii po bieżącej iP
( Shift-P ) nad bieżącą linią.2) Utwórz mapowanie: wtedy jest tylko jeden lub dwa klucze:
3) Wersja funkcji mapowania (naprawdę niepotrzebna, ale tylko dla kompletności):
źródło
Możesz wkleić bufor w trybie wstawiania, używając,
<C-R>
a następnie nazwy bufora do wklejenia. Domyślnym buforem jest"
, więc możesz to zrobićOdkryłem, że używam
<C-R>"
bardzo często i związałem to z<C-F>
moim vimrc:źródło
To nadal wymaga trzech naciśnięć klawiszy, ale wydaje mi się łatwiejsze niż Esc:
o<Alt-p>
Ponieważ jesteś w trybie wstawiania po naciśnięciu o, modyfikator Alt pozwoli ci użyć polecenia tak, jakbyś nie był.
źródło
Korzystanie z tej wtyczki: https://github.com/tpope/vim-unimpaired
]p
pasty na linii poniżej[p
pasty na powyższej liniiZalety:
źródło
tpope/vim-unimpaired
to zrobić.Osobiście zmapowałem Enter (CR) w ten sposób:
... na podstawie tego artykułu Vim Wikia.
W ten sposób mogę tworzyć znaki nowej linii bezpośrednio z trybu normalnego i łącząc to z chęcią wklejenia do nowej linii poniżej, zrobiłbym:
Możesz także pominąć k w nmap powyżej, w zależności od tego, jaką funkcjonalność wolisz od Enter , więc tak by było
<CR>p
.Zmapowałem również jj do Esc , co również pomogłoby w tym przypadku. Esc jest zbyt daleko od rzędu domowego, jak na to, jak ważne jest w vimie.
Nie krótszy niż inne rozwiązania, ale wydaje mi się, że wydaje się mniej niezgrabny niż niektóre z nich, a także ma inne zastosowania.
źródło
Jeśli kopiujesz całą linię, a następnie wklejasz całą linię, użyj
Y
w pierwszej kolejności do szarpania linii lub linii, w tym podziału linii, ip
wklejania. Możesz także użyć trybuV
wizualnej linii , w przeciwieństwie do zwykłegov
trybu wizualnego.źródło
Mam mapowanie
inoremap jj <ESC>
. Więc łatwo wstawić nowy wiersz zojj
iOjj
a następniep
.więc
ojjp
wklej nowy wiersz. ma wtedy jeszcze jeden skok,o<esc>p
aleojjp
jest to dla mnie łatwe.źródło
Znalazłem na to eleganckie rozwiązanie. Jeśli umieszczasz rejestr szarpnięcia w schowku systemu operacyjnego (co i tak jest świetne), z rozszerzeniem
niż możesz zrobić
o<Ctl-v>
.Poza tym, że jest mniej pociągnięć, poprawia to w obu przypadkach
o<Esc>p
i:pu
ponieważ zachowuje wcięcia: obie pozostałe opcje rozpoczynają się od znaku zero w nowej linii.Uwaga: może to zależeć lub nie od systemu operacyjnego. Wiem tylko, że działa na najnowszej wersji OS X, ale schowek to tylko jeden z wielu sposobów na szarpanie w schowku systemu operacyjnego.
źródło
Jeśli chcesz również zakończyć w trybie wstawiania, możesz wkleić w trybie wstawiania za pomocą
CTRL-R "
. https://stackoverflow.com/a/2861909/461834Wciąż trzy naciśnięcia klawiszy, ale bez ucieczki, i zapisujesz naciśnięcie klawisza, jeśli i tak chcesz zakończyć wstawianie.
źródło
Używam następującego mapowania w mojej konfiguracji Neovim:
Małe wyjaśnienie:
m`
: ustaw znacznik w aktualnej pozycji kursora.o<Esc>p
: utwórz nową linię poniżej i wklej tekst w tej liniiO<Esc>P
: utwórz nową linię powyżej i wklej tekst w tej linii``
: umieść kursor w pierwotnej pozycjiZobacz,
:h mark
aby uzyskać więcej informacji o znakach w Vimie.źródło
Jeśli chcesz pozostać w trybie wstawiania, możesz to zrobić
o ctrl+o p
o
- tryb wstawiania i przejdź do nowej liniictrl+o
- uruchom pojedyncze polecenie jak w normalnym trybiep
- wklejTo trzy naciśnięcia klawiszy, ale pozostajesz w trybie wstawiania, a także
o ctrl+o
jest dość szybki, więc osobiście traktuję to jako naciśnięcie 2,5 klawisza.źródło
To rozwiązanie wydaje się mieć zastosowanie tylko wtedy, gdy blok skopiowanego tekstu zaczyna się w nowym wierszu (w przeciwieństwie do pobierania fragmentu tekstu gdzieś w wierszu), ale zawsze możesz rozpocząć kopiowanie od ostatniego znaku, który chcesz przechwycić, a następnie nawigować do ostatniego znaku na końcu wiersza przed początkiem żądanego bloku kopiowania. Następnie, gdy chcesz go wkleić, umieść kursor na końcu wiersza, pod którym chcesz wkleić tekst i naciśnij p. Jeśli nie schrzaniłem wyjaśnienia, powinno to zapewnić efekt, którego szukasz.
źródło