Czy można wkleić w trybie wstawiania w Vimie?
385
W trybie wstawiania naciśnij CTRL-R {register}
Przykłady:
CTRL-R *
wstawi zawartość schowka CTRL-R "
(rejestr bez nazwy) wstawia ostatnie usunięcie lub szarpnięcie. Aby znaleźć to w pomocy Vima, wpisz :h i_ctrl-r
CTRL-R *
działa tylko w GVIM lub wersjach skompilowanych do interakcji z x. Wpiszvim --version
i wyszukaj+xterm_clipboard
. Jeśli tego nie masz, potrzebujesz innej wersji vima. ( vim.wikia.com/wiki/Accessing_the_system_clipboard )+clipboard
, ale jeśli tak, to i+xterm_clipboard
tak powinieneś. W niektórych systemach operacyjnychxterm_clipboard
nie ma zastosowania.*
rejestr można wkleić za pomocą kliknięcia środkowym przyciskiem myszy, podczas gdy+
jest to tradycyjny sposób kopiowania / wklejania. standard.freedesktop.org/clipboards-spec/clipboards-latest.txtJeśli nie chcesz Vim do modyfikacji formatowania przychodzące wklejony tekst, można również rozważyć użycie:
:set paste
. Zapobiegnie to ponownej tabulacji kodu przez Vima. Po:set nopaste
zakończeniu wklejania powróci do normalnego zachowania.Możliwe jest także przełączanie trybu jednym klawiszem, dodając coś podobnego
set pastetoggle=<F2>
do .vimrc. Więcej informacji na temat przełączania automatycznego wcięcia znajduje się tutaj .źródło
:set nopaste
wyłączy tryb wklejania:set paste!
Prawdopodobnie ustawienie wklejania jest bardzo blisko w historii poleceń, więc możesz po prostu nacisnąć „:”, a następnie strzałkę w górę i dodać „!”.:set paste!
Dzięki :)!
na końcu polecenia wvim
przełącza polecenie i wyłączać. W ten sposób nie musisz pisać:set nopaste
zamiast tego, możesz przewinąć historię i ponownie uruchomić to samo polecenie (:set paste!
).Nie, nie bezpośrednio.Możesz jednak szybko wyjść z trybu wstawiania dla pojedynczej operacji w trybie normalnym, Ctrl-Oa następnie wkleić stamtąd, co zakończy się powrotem do trybu wstawiania.Kombinacja klawiszy: Ctrl-O p
EDYCJA: Interesujące. Wygląda na to, że istnieje sposób, który wymieniło kilka innych osób.
źródło
esc + p
?esc + p + i
i zdecydowanie łatwiejsze do pisania niżCTRL-R + "
CTRL-R "
. Na przykład, chociaż ustawienia vimrc mogą to zmienić, wklejenie czegoś w nowym wierszuCTRL-O p
powoduje zniknięcie wcięcia.W trybie wstawiania możesz użyć
Ctrl-R {register}
, gdzie rejestr może być:+
do schowka*
dla schowka X (ostatnio zaznaczony tekst w X),"
dla nienazwanego rejestru (ostatnie usunięcie lub szarpnięcie w Vimie),:h registers
).Ctrl-R {register}
wstawia tekst tak, jakby został wpisany.Ctrl-R Ctrl-O {register}
wstawia tekst z oryginalnym wcięciem.Ctrl-R Ctrl-P {register}
wstawia tekst i automatycznie wcina go.Ctrl-O
może być użyty do uruchomienia dowolnego polecenia trybu normalnego przed powrotem do trybu wstawiania, więcCtrl-O "+p
może być również użyty na przykład.Aby uzyskać więcej informacji, przejrzyj dokumentację za pomocą
:h i_ctrl-r
źródło
Możesz użyć tego do wklejenia ze schowka za pomocą Ctrlv:
A to za szarpanie wizualnego wyboru do schowka za pomocą Ctrlc:
Jeśli chcesz również domyślnie używać schowka do klasycznego vim-yanking / pasting ( y/ p) w trybie normalnym, oto opcja konfiguracji, która to robi:
Dzięki tym konfiguracjom możesz np. Najpierw szarpać w trybie normalnym, a następnie wklejać Ctrlvw trybie wstawiania. Możesz także wklejać tekst z różnych instancji vima i różnych aplikacji.
Inną opcją jest:
Następnie będziesz mógł wybrać coś przeciągając myszą w swoim środowisku X i wkleić go później do vima. Ale (z jakiegoś powodu) nie będziesz w stanie szarpać czegoś ( y) w Vimie, a shiftinsertpotem gdzieś indziej, co jest prawdopodobnie dość ograniczające.
Dokumenty Vima na ten temat: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Aby wkleić z niestandardowych rejestrów, możesz postępować zgodnie z innymi odpowiedziami :). Ta odpowiedź dotyczy głównie integracji Vima ze schowkiem systemowym.
Zauważ, że do
set clipboard=unnamedplus
iset clipboard=unnamed
do pracy musisz użyć gvim lub vimx (vim-X11
): Są one kompilowane+xterm_clipboard
. Możesz opcjonalnie umieścić to w swoim.bashrc
aliasie zavim
pomocąvimx
:Możesz dowiedzieć się, czy Twój vim posiada
+xterm_clipboard
informacje zawarte wvim --version
.źródło
:set paste
i bizantyjskie<leader><leader> * y
jest nawet zdalnie pożądane? Żeby nie zabrzmieć zbyt oddanym, jestem naprawdę ciekawy, jaką filozofię vim to odzwierciedla lub czy jest to po prostu historyczne nieszczęście.inoremap <S-Insert> <F12><C-r>+<F12>
(używam F12 jako pastetoggle). Dzięki.Jeśli ustawisz Vima na używanie schowka systemowego (
:set clipboard=unnamed
), to każdy tekst, który skopiujesz w Vimie, możesz wkleić za pomocą Shift+ Insert. Shift+ Insertto po prostu kombinacja klawiszy wklejania dla całego systemu operacyjnego ( Ctrl+ Insertto odpowiednia „kopia”).źródło
p
wklei tekst do schowka?Shift + Insert
do wklejenia tekstu musimy być w trybie wstawiania.Możesz także użyć środkowego przycisku myszy, aby wkleić w trybie wstawiania (tylko Linux).
źródło
Możesz przejść do
-- INSERT (past) --
trybu poprzez:lub
:set paste
i wejście w tryb wstawiania (:set nopaste
aby wyłączyć)w
-- INSERT (past) --
trybie po prostu użyj funkcji wklejania systemu (np. CtrlShiftvw systemie Linux, Cmdvw systemie Mac OS).Ta strategia jest bardzo przydatna przy korzystaniu z vima nad ssh.
źródło
Tak. W systemie Windows Ctrl+ Vi Linux naciskanie obu przycisków myszy prawie jednocześnie.
W systemie Windows myślę, że ten wiersz w moim _vimrc prawdopodobnie to robi:
W Linuksie nie pamiętam, jak to zrobiłem. Wygląda na to, że prawdopodobnie usunąłem jakąś linię z domyślnego pliku .vimrc.
źródło
Wklej w trybie wstawiania
W tym przypadku mapa niestandardowa wydaje się odpowiednia. Oto, czego używam do wklejania szarpanych elementów w trybie wstawiania:
Mój
Leader
klucz tutaj jest\
; oznacza to, że uderzenie\p
w trybie wstawiania wkleiłoby wcześniej szarpane elementy / linie.źródło
Po prostu dodaj mapę:
uruchom ponownie vima i po naciśnięciu
Crtl+p
w trybie wstawiania skopiowany tekst zostanie wklejonyźródło