Wklej w trybie wstawiania?

Czy można wkleić w trybie wstawiania w Vimie?

 403
vim
Author: Peter Mortensen, 2010-05-18

11 answers

W trybie insert hit CTRL-R {register}

Przykłady:

  • CTRL-R * wstawi zawartość schowka
  • CTRL-R " (rejestr nienazwany) wstawia ostatni delete lub yank.

Aby znaleźć to w pomocy Vima wpisz :h i_ctrl-r

 494
Author: david,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-01 02:20:51

Jeśli nie chcesz, aby Vim zmieniał formatowanie w nadchodzącym wklejonym tekście, możesz również rozważyć użycie: :set paste. Uniemożliwi to Vimowi ponowne zakodowanie kodu. Po zakończeniu wklejania :set nopaste powróci do normalnego zachowania.

Możliwe jest również przełączenie trybu za pomocą jednego klawisza, dodając coś w rodzaju set pastetoggle=<F2> do twojego .vimrc. Więcej szczegółów na temat przełączania Auto-indent znajduje się tutaj .

 247
Author: James Snyder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-24 18:18:44

Nie, Nie bezpośrednio. możesz jednak szybko wyjść z trybu wstawiania, aby wykonać jedną operację w trybie normalnym za pomocą Ctrl-O , a następnie wklej stamtąd, co zakończy się przywróceniem trybu wstawiania.

Kombinacja klawiszy: Ctrl-O p

EDIT: ciekawe. Wydaje się, że istnieje sposób, jak kilka innych osób wymieniło.

 128
Author: JaredPar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 15:28:40

W trybie insert możesz użyć Ctrl-R {register}, gdzie register może być:

  • + do schowka,
  • * do schowka X (Ostatnio zaznaczony tekst w X),
  • " dla rejestru nienazwanego (last delete lub yank in Vim),
  • lub kilka innych (patrz :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 Auto-wcięcia 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żywany, na przykład.

Aby uzyskać więcej informacji, zobacz dokumentację za pomocą :h i_ctrl-r

 35
Author: Zaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-22 13:11:01

Możesz użyć tego do wklejenia ze schowka za pomocą Ctrlv :

set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>

I to do zaznaczenia wizualnego w schowku za pomocą Ctrlc:

vnoremap <C-c> "+y

Jeśli chcesz również domyślnie używać schowka do klasycznego szarpania/wklejania vimów (y/p ) w trybie normalnym, oto Opcja konfiguracji, która to robi:

set clipboard=unnamedplus

Za pomocą tego configs ' a można np. najpierw w trybie normal a potem wkleić z Ctrlv w trybie insert. Możesz również wkleić tekst z różnych instancji vim i różnych aplikacji.

Inna opcja to:

set clipboard=unnamed

Wtedy będziesz mógł po prostu wybrać coś przeciągając myszką w środowisku X i wkleić to do Vima później. Ale (z jakiegoś powodu) nie będziesz w stanie czegoś szarpnąć (y ) w vim i shiftwstawić to gdzie indziej, co prawdopodobnie jest całkiem ograniczam.

Vim docs about this: http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Do wklejania z własnych rejestrów możesz śledzić Pozostałe odpowiedzi :). Ta odpowiedź dotyczy głównie integracji Vima ze schowkiem systemowym.


Zauważ, że aby set clipboard=unnamedplus i set clipboard=unnamed działały, musisz użyć gvim lub vimx (vim-X11): są one kompilowane z +xterm_clipboard. Możesz opcjonalnie umieścić to w swoim .bashrc do aliasu vim z vimx:

if [ -e /usr/bin/vimx ]; then
    alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi

Możesz dowiedz się, czy twój vim ma +xterm_clipboard w informacji dostarczonej przez vim --version.

 27
Author: clime,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-19 13:14:52

Jeśli ustawisz Vim na używanie schowka systemowego (:set clipboard=unnamed), wtedy każdy tekst skopiowany w Vimie może zostać wklejony za pomocą Shift + Insert . Shift + Insert jest po prostu kombinacją klawiszy wklejania w całym systemie operacyjnym (Ctrl + Insert jest odpowiednią "kopią").

 21
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-24 18:17:44

Możesz również użyć środkowego przycisku myszy do wklejenia w trybie wstawiania (tylko Linux).

 18
Author: lcltj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-24 18:19:00

Możesz wejść w tryb -- INSERT (past) -- poprzez:

  • combo Klawiatury: y p

Lub

  • :set paste i wejście w tryb insert ({[2] } aby wyłączyć)

Raz w trybie -- INSERT (past) -- wystarczy użyć funkcji wklejania systemów (np. CtrlShiftv na Linuksie, Cmdv na Mac OS).

Ta strategia jest bardzo przydatna podczas korzystania z Vima przez ssh.

 5
Author: rudolph9,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-04 20:21:20

Tak. W Windows Ctrl+V i w Linuksie naciskając oba przyciski myszy niemal jednocześnie.

W Windows myślę, że ta linia 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 .plik vimrc.

 4
Author: Windows programmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-05 07:49:23

Wklej w trybie wstawiania

Mapa niestandardowa wydaje się odpowiednia w tym przypadku. Tego używam do wklejania elementów w trybie insert:

inoremap <Leader>p <ESC>pa

Moim kluczem Leader jest \; oznacza to, że naciśnięcie \p w trybie wstawiania wklejiłoby wcześniej szarpane elementy/linie.

 0
Author: Sheharyar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-09 20:01:08

Wystarczy dodać mapę:

" ~/.vimrc
inoremap <c-p> <c-r>*

Uruchom ponownie Vima i naciśnij Crtl+p w trybie insert, skopiowany tekst zostanie wklejony

 0
Author: itsnikolay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-02 21:04:06