Czy można wkleić w trybie wstawiania w Vimie?
Czy można wkleić w trybie wstawiania w Vimie?
Odpowiedzi:
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. Wpisz vim --versioni 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_clipboardtak powinieneś. W niektórych systemach operacyjnych xterm_clipboardnie 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.txt
Jeś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 nopastezakoń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 .
:set nopastewyłą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 w vimprzełącza polecenie i wyłączać. W ten sposób nie musisz pisać :set nopastezamiast 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.
esc + p?
esc + p + ii zdecydowanie łatwiejsze do pisania niżCTRL-R + "
CTRL-R ". Na przykład, chociaż ustawienia vimrc mogą to zmienić, wklejenie czegoś w nowym wierszu CTRL-O ppowoduje 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-Omoże być użyty do uruchomienia dowolnego polecenia trybu normalnego przed powrotem do trybu wstawiania, więc
Ctrl-O "+pmoże być również użyty na przykład.
Aby uzyskać więcej informacji, przejrzyj dokumentację za pomocą :h i_ctrl-r
Możesz użyć tego do wklejenia ze schowka za pomocą Ctrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
A to za szarpanie wizualnego wyboru do schowka za pomocą Ctrlc:
vnoremap <C-c> "+y
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:
set clipboard=unnamedplus
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:
set clipboard=unnamed
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=unnamedplusi set clipboard=unnameddo pracy musisz użyć gvim lub vimx ( vim-X11): Są one kompilowane +xterm_clipboard. Możesz opcjonalnie umieścić to w swoim .bashrcaliasie za vimpomocą vimx:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
Możesz dowiedzieć się, czy Twój vim posiada +xterm_clipboardinformacje zawarte w vim --version.
:set pastei bizantyjskie <leader><leader> * yjest 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”).
pwklei tekst do schowka?
Shift + Insertdo wklejenia tekstu musimy być w trybie wstawiania.
Możesz także użyć środkowego przycisku myszy, aby wkleić w trybie wstawiania (tylko Linux).
Możesz przejść do -- INSERT (past) --trybu poprzez:
lub
:set pastei wejście w tryb wstawiania ( :set nopasteaby 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.
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:
source $VIMRUNTIME/mswin.vim
W Linuksie nie pamiętam, jak to zrobiłem. Wygląda na to, że prawdopodobnie usunąłem jakąś linię z domyślnego pliku .vimrc.
W tym przypadku mapa niestandardowa wydaje się odpowiednia. Oto, czego używam do wklejania szarpanych elementów w trybie wstawiania:
inoremap <Leader>p <ESC>pa
Mój Leaderklucz tutaj jest \; oznacza to, że uderzenie \pw trybie wstawiania wkleiłoby wcześniej szarpane elementy / linie.
Po prostu dodaj mapę:
" ~/.vimrc
inoremap <c-p> <c-r>*
uruchom ponownie vima i po naciśnięciu Crtl+pw trybie wstawiania skopiowany tekst zostanie wklejony