Tylko uwaga, głównym powodem używania Vi jest to, że Vim nie jest zainstalowany. Jeśli masz zainstalowanego Vima, prawdopodobnie warto go użyć. Vi nie ma przewagi, poza tym, że jest już obecny przy każdej instalacji Unixa. Moim zdaniem najlepszym sposobem na nauczenie się Vima jest otwarcie emulatora terminala (nie z poziomu Vima) i wpisanie. vimtutorPrzyspieszy on pracę z komputerem w ciągu około 45 minut.
Ben Mordecai
1
+1 @BenMordecai - Znałem już vi (ze starego), w tym jej wygodną funkcję podpowłoki, ale potrzebowałem tego odświeżenia. Świetna odrobina korepetycji. Przeszedłem przez to jak wiatr. Dzięki.
Cbhihe
Odpowiedzi:
192
Najpierw upewnij się, że jesteś w trybie edycji (naciśnij i). Następnie możesz wkleić za pomocą Ctrl+ Shift+ V, jeśli korzystasz z emulatora terminala, takiego jak gnome-terminal(lub wybierz „Wklej” z menu po kliknięciu prawym przyciskiem myszy).
Możesz także wpisać :set pastevim przed wklejeniem, aby wyłączyć automatyczne wcięcia itp. Następnie :set nopastepo wklejeniu zawartości.
Sprawdź również to pytanie na stackoverflow.com, aby uzyskać więcej informacji.
Jeśli chcesz skopiować / wkleić linie vim(w przeciwieństwie do wklejania zawartości schowka), powinieneś sprawdzić polecenie yank . Oto ściągawka, która może pomóc.
Myślę, że jeśli masz kursor myszy, nie możesz wkleić za pomocą Ctrl + Shift + V.
Alvin Wong,
14
Uwaga: wielkość Iliter ma znaczenie. Małe litery ito normalny sposób wejścia w tryb wstawiania. Capital Iprzenosi kursor na początek linii, a następnie przechodzi do trybu wstawiania.
Ben Mordecai
64
Vi (i Vim) działa zupełnie inaczej niż zwykły edytor tekstu, taki jak Gedit. Ma również dość stromą krzywą uczenia się. Jeśli chcesz nauczyć się podstawowych poleceń, zacznij od tego interaktywnego samouczka .
Jednak aby odpowiedzieć na twoje pytanie. Do zawartości schowka systemowego można uzyskać dostęp poprzez rejestr plus. Aby wkleić coś ze schowka systemowego, możesz w trybie normalnym nacisnąć: "+p(Nie w tym samym czasie, ale jeden po drugim).
W GNOME Terminal skrótami do kopiowania i wklejania są odpowiednio Ctrl-Shift-C i Ctrl-Shift-V.
Flimm
1
Próbowałem kolejno naciskać <kbd> "</kbd>, <kbd> + </kbd> i <kbd> p </kbd>, a także <kbd>" </kbd> i <kbd> p < / kbd> i nic się nie stało. Co zrobiłem źle? Używam vinievim
user907860
1
To właściwa odpowiedź. Używając np. Ctrl-Shift-v będzie działał tylko z najprostszą zawartością (podziały linii i wcięcia mogą się naprawdę nie zgadzać, jeśli jesteś w terminalu i zapomniałeś go użyć set :paste).
rsenna
29
Jeśli chcesz skopiować zawartość wklejaną w tym samym pliku , użyj yanki paste.
Jeśli chcesz skopiować zawartość wklejaną między terminalami , otwórz pierwszy plik, pociągając za tekst, który chcesz, a następnie otwórz drugi plik w vimie (np. :tabnew /path/to/second/file) I naciśnij, paby go wkleić.
Jeśli chcesz skopiować zawartość wklejania z vima do zewnętrznego programu , musisz uzyskać dostęp do schowka systemowego. Zakładam, że używasz Ubuntu. Wersja vim z graficznym interfejsem użytkownika ma zawsze obsługę schowka, jednak jeśli chcesz używać Vima z terminala, musisz sprawdzić obsługę schowka X11.
W konsoli wpisz:
$ vim --version | grep xterm
Jeśli znajdziesz -xterm_clipboard , masz dwie opcje:
1) Skompiluj vima z włączoną flagą xterm_clipboard
2) Odinstaluj vima, zamiast niego zainstaluj gvim (vim-gtk lub vim-gnome). Możesz trzymać się vim-gui, wywołując vim z terminala, tak samo jak wcześniej. Tym razem, gdy sprawdzisz, powinieneś znaleźć + xterm_clipborad .
Teraz, gdy szarpniesz jakiś tekst w rejestrze + w edytorze vim (np. „+ Yy), zostanie on również skopiowany do schowka systemowego, który możesz pobrać z zewnętrznego programu, takiego jak edytor gedit, za pomocą Ctrl+ V.
Jeśli chcesz skopiować zawartość wklejaną z zewnętrznego programu do vima , najpierw skopiuj tekst do schowka systemowego za pomocą Ctrl+ C, a następnie w trybie wstawiania edytora vim kliknij środkowy przycisk myszy (zwykle koło) lub naciśnij Ctrl+ Shift+, Vaby wkleić.
Są to 4 podstawowe warunki kopiowania i wklejania związane z vimem. Mam nadzieję, że to pomoże.
Jaki jest sens: tabnew / path / to / second / file? Możesz osiągnąć dokładnie to samo, szarpiąc / kopiując / wycinając pierwszy plik, otwierając drugi plik za pomocą: vi / path / to / second / file i wklejając go (p / P). Przynajmniej w moim przypadku ... A może dlatego, że mam włączoną funkcję vim + xterm_clipboard? A może jest coś więcej do poznania niż tylko to?
Cbhihe
1
Na Ubuntu vim-gtkma xterm_clipboardwsparcie, a na Fedorze xvim.
icc97
18
Zawsze używam Shift+, Insertgdy chcę wkleić tekst do terminala, działa we wszystkich programach terminala.
(Co jest również powodem, dla którego nigdy nie dostaję laptopa, w którym nie można nacisnąć Insertbez naciśnięcia drugiego klawisza)
Myślałem, że to małe litery i. Co robi wielkie litery I?
Flimm
@Flimm, co zostało już wyjaśnione w komentarzu Bena Mordecai na temat innej odpowiedzi.
sierrasdetandil
Zredagowałem odpowiedź na małą literę i. Wielkie litery Iprzenoszą kursor na początek linii przed przejściem do trybu wstawiania, co nie jest tutaj potrzebne.
Flimm
5
Szczegółowe instrukcje kopiowania / wklejania wierszy tekstu w vi za pomocą yankiput
(użyj następujących poleceń w trybie komend vi)
Kopiuj (YANK)
Aby skopiować jedną linię w vi:
W trybie komend przesuń kursor do linii, którą chcesz skopiować, i wpisz yylub wpiszY
Aby skopiować 2 linie w vi:
W trybie poleceń przesuń kursor do pierwszego wiersza, który należy skopiować, i wpisz 2yylub wpisz2Y
(podobnie można skopiować dowolną liczbę wierszy)
Aby skopiować wszystkie linie z bieżącej lokalizacji na koniec pliku:
W trybie poleceń przesuń kursor do pierwszego wiersza, który należy skopiować, i wpisz yG
Aby skopiować cały tekst z bieżącej lokalizacji na koniec bieżącego słowa:
W trybie komend przesuń kursor do miejsca, z którego należy skopiować tekst i wpisać yw
Aby skopiować cały tekst z bieżącej lokalizacji na koniec linii:
W trybie komend przesuń kursor do miejsca, z którego należy skopiować tekst i wpisać y$
Wklej (PUT)
Aby wkleić tekst do schowka - po położeniu kursora:
W trybie komend wpisz p
Aby wkleić tekst do schowka - przed położeniem kursora:
Z Vimem 8+ na Linuksie lub Macu, możesz teraz po prostu użyć natywnej pasty systemu operacyjnego ( ctrl+shift+Vna Linuksie, cmd+Vna Macu). Nie naciskaj, iaby przejść do trybu wstawiania.
Wklei zawartość schowka systemu operacyjnego, zachowując spacje i tabulatory bez dodawania automatycznego wcięcia. Jest to odpowiednik starego :set paste, i, ctrl+shift+V, esc, :set nopastemetoda.
Oto odpowiedź, której szukam. Ponieważ Vim nie jest domyślny w dystrybucjach gnu / linux, należy go zainstalować nawet w Ubuntu. Ponadto przyciski „góra w dół” Vi nie działają na Ubuntu i nie wyróżniają się.
Chciałem tylko zauważyć, że używając Vima przez Git Bash w systemie Windows, możesz po prostu użyć pmyszy lub kliknąć środkowy przycisk myszy, nie będąc w trybie wstawiania. Używając Vima przez PuTTY , możesz kliknąć prawym przyciskiem myszy. I wyróżnianie wykonuje kopiowanie.
Zauważyłem to, ponieważ nie zauważyłem, że jest to SE dla Ubuntu.
To nie działało dla mnie w Windows Git Bash. Z której konsoli korzystasz, mięty lub Windows cmd?
wisbucky
Wierzę, że to było miętowe.
Tyler Christian
0
Możesz użyć Ctrl+ Shift+ Vdo wklejenia w vimie wersji terminalowej, ale w wersji vim GUI, takiej jak Neovim-Qtwklejanie tekstu ze schowka systemowego za pomocą Ctrl+ Shift+ Vpo prostu nie będzie działać. Musisz uzyskać dostęp do schowka "+lub "*edytora vim.
Dodanie nowego skrótu klawiszowego .vimrcspowoduje po prostu polecenie kopiuj / wklej:
" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
vimtutor
Przyspieszy on pracę z komputerem w ciągu około 45 minut.Odpowiedzi:
Najpierw upewnij się, że jesteś w trybie edycji (naciśnij i). Następnie możesz wkleić za pomocą Ctrl+ Shift+ V, jeśli korzystasz z emulatora terminala, takiego jak
gnome-terminal
(lub wybierz „Wklej” z menu po kliknięciu prawym przyciskiem myszy).Możesz także wpisać
:set paste
vim przed wklejeniem, aby wyłączyć automatyczne wcięcia itp. Następnie:set nopaste
po wklejeniu zawartości.Sprawdź również to pytanie na stackoverflow.com, aby uzyskać więcej informacji.
Jeśli chcesz skopiować / wkleić linie
vim
(w przeciwieństwie do wklejania zawartości schowka), powinieneś sprawdzić polecenie yank . Oto ściągawka, która może pomóc.źródło
I
liter ma znaczenie. Małe literyi
to normalny sposób wejścia w tryb wstawiania. CapitalI
przenosi kursor na początek linii, a następnie przechodzi do trybu wstawiania.Vi (i Vim) działa zupełnie inaczej niż zwykły edytor tekstu, taki jak Gedit. Ma również dość stromą krzywą uczenia się. Jeśli chcesz nauczyć się podstawowych poleceń, zacznij od tego interaktywnego samouczka .
Jednak aby odpowiedzieć na twoje pytanie. Do zawartości schowka systemowego można uzyskać dostęp poprzez rejestr plus. Aby wkleić coś ze schowka systemowego, możesz w trybie normalnym nacisnąć: "+p(Nie w tym samym czasie, ale jeden po drugim).
źródło
vi
nievim
set :paste
).Jeśli chcesz skopiować zawartość wklejaną w tym samym pliku , użyj
yank
ipaste
.Jeśli chcesz skopiować zawartość wklejaną między terminalami , otwórz pierwszy plik, pociągając za tekst, który chcesz, a następnie otwórz drugi plik w vimie (np.
:tabnew /path/to/second/file
) I naciśnij,p
aby go wkleić.Jeśli chcesz skopiować zawartość wklejania z vima do zewnętrznego programu , musisz uzyskać dostęp do schowka systemowego. Zakładam, że używasz Ubuntu. Wersja vim z graficznym interfejsem użytkownika ma zawsze obsługę schowka, jednak jeśli chcesz używać Vima z terminala, musisz sprawdzić obsługę schowka X11.
W konsoli wpisz:
Jeśli znajdziesz -xterm_clipboard , masz dwie opcje:
1) Skompiluj vima z włączoną flagą xterm_clipboard
2) Odinstaluj vima, zamiast niego zainstaluj gvim (vim-gtk lub vim-gnome). Możesz trzymać się vim-gui, wywołując vim z terminala, tak samo jak wcześniej. Tym razem, gdy sprawdzisz, powinieneś znaleźć + xterm_clipborad .
Teraz, gdy szarpniesz jakiś tekst w rejestrze + w edytorze vim (np. „+ Yy), zostanie on również skopiowany do schowka systemowego, który możesz pobrać z zewnętrznego programu, takiego jak edytor gedit, za pomocą Ctrl+ V.
Jeśli chcesz skopiować zawartość wklejaną z zewnętrznego programu do vima , najpierw skopiuj tekst do schowka systemowego za pomocą Ctrl+ C, a następnie w trybie wstawiania edytora vim kliknij środkowy przycisk myszy (zwykle koło) lub naciśnij Ctrl+ Shift+, Vaby wkleić.
Są to 4 podstawowe warunki kopiowania i wklejania związane z vimem. Mam nadzieję, że to pomoże.
źródło
vim-gtk
maxterm_clipboard
wsparcie, a na Fedorzexvim
.Zawsze używam Shift+, Insertgdy chcę wkleić tekst do terminala, działa we wszystkich programach terminala.
(Co jest również powodem, dla którego nigdy nie dostaję laptopa, w którym nie można nacisnąć Insertbez naciśnięcia drugiego klawisza)
źródło
Vi
/Vim
! = terminal;)Ctrl+A
,Ctrl+C
także?Użyj środkowego przycisku myszy, aby wstawić zaznaczony tekst w innym miejscu.
Jest to przydatne, gdy nie masz dostępu do schowka systemowego (na przykład w zdalnej sesji SSH).
Musi być w trybie edycji / wstawiania dla Vima.
źródło
Po wejściu w vi naciśnij,
i
aby przejść do trybu wstawiania, kliknij prawym przyciskiem myszy w terminalu, kliknij wklej.źródło
i
. Co robi wielkie literyI
?i
. Wielkie literyI
przenoszą kursor na początek linii przed przejściem do trybu wstawiania, co nie jest tutaj potrzebne.Szczegółowe instrukcje kopiowania / wklejania wierszy tekstu w vi za pomocą
yank
iput
(użyj następujących poleceń w trybie komend vi)
Kopiuj (YANK)
Aby skopiować jedną linię w vi:
yy
lub wpiszY
Aby skopiować 2 linie w vi:
2yy
lub wpisz2Y
(podobnie można skopiować dowolną liczbę wierszy)
Aby skopiować wszystkie linie z bieżącej lokalizacji na koniec pliku:
yG
Aby skopiować cały tekst z bieżącej lokalizacji na koniec bieżącego słowa:
yw
Aby skopiować cały tekst z bieżącej lokalizacji na koniec linii:
y$
Wklej (PUT)
Aby wkleić tekst do schowka - po położeniu kursora:
p
Aby wkleić tekst do schowka - przed położeniem kursora:
P
źródło
Miałem problem, ponieważ moja instalacja Vima nie obsługiwała schowka :
Zainstalowałem vim-gnome (który obsługuje schowek), a następnie ponownie sprawdziłem:
Teraz jestem w stanie skopiować i wkleić, używając odpowiednio „+ y” i „+ p.
źródło
Z Vimem 8+ na Linuksie lub Macu, możesz teraz po prostu użyć natywnej pasty systemu operacyjnego (
ctrl+shift+V
na Linuksie,cmd+V
na Macu). Nie naciskaj,i
aby przejść do trybu wstawiania.Wklei zawartość schowka systemu operacyjnego, zachowując spacje i tabulatory bez dodawania automatycznego wcięcia. Jest to odpowiednik starego
:set paste
,i
,ctrl+shift+V
,esc
,:set nopaste
metoda.Nie potrzebujesz już nawet instalowanych funkcji
+clipboard
lub+xterm_clipboard
vim. Ta funkcja nosi nazwę „wklejania w nawiasach”. Aby uzyskać więcej informacji, zobacz https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763źródło
Jeśli jesteś rootem : Ctrl+ Shift+V
Jeśli nie jesteś rootem : kliknij środek myszą.
źródło
Chciałem tylko zauważyć, że używając Vima przez Git Bash w systemie Windows, możesz po prostu użyć
p
myszy lub kliknąć środkowy przycisk myszy, nie będąc w trybie wstawiania. Używając Vima przez PuTTY , możesz kliknąć prawym przyciskiem myszy. I wyróżnianie wykonuje kopiowanie.Zauważyłem to, ponieważ nie zauważyłem, że jest to SE dla Ubuntu.
Inne pomocne polecenia:
źródło
Możesz użyć Ctrl+ Shift+ Vdo wklejenia w vimie wersji terminalowej, ale w wersji vim GUI, takiej jak
Neovim-Qt
wklejanie tekstu ze schowka systemowego za pomocą Ctrl+ Shift+ Vpo prostu nie będzie działać. Musisz uzyskać dostęp do schowka"+
lub"*
edytora vim.Dodanie nowego skrótu klawiszowego
.vimrc
spowoduje po prostu polecenie kopiuj / wklej:źródło