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 --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 operacyjnych xterm_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.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 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 .
: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 w vim
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.
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 wierszu CTRL-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ęc
Ctrl-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
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=unnamedplus
i set 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 za vim
pomocą 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_clipboard
informacje zawarte w vim --version
.
: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”).
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).
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.
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 Leader
klucz tutaj jest \
; oznacza to, że uderzenie \p
w 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+p
w trybie wstawiania skopiowany tekst zostanie wklejony