W Vimie, jeśli wkleję ten skrypt:
#!/bin/sh
VAR=1
while ((VAR < 10))
do
echo "VAR1 is now $VAR"
((VAR = VAR +2))
done
echo "finish"
Otrzymuję te dziwne wyniki:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Pojawiły się znaki skrótu (#) i tabulatory. Dlaczego?
vim
clipboard
whitespace
Elbarna
źródło
źródło
Odpowiedzi:
Są dwa powody:
Aby wkleić,
vim
gdy włączone jest automatyczne wcięcie, musisz zmienić tryb wklejania, wpisując:Następnie możesz przejść do trybu wstawiania i wkleić kod. Po zakończeniu wklejania wpisz:
aby wyłączyć tryb wklejania. Ponieważ jest to częste i częste działanie,
vim
oferuje przełączanie trybu wklejania:Możesz zmienić
F2
dowolny klucz, a teraz możesz łatwo włączać i wyłączać wklejanie.Aby wyłączyć automatyczne wstawianie komentarzy, możesz dodać te wiersze do vimrc :
vim
udostępnia także rejestr wklejania , umożliwiający wklejenie tekstu ze schowka systemowego. Możesz użyć"*p
lub w"+p
zależności od systemu. W systemie bez X11, takim jak OSX lub Windows, musisz użyć*
rejestru. W systemie X11, takim jak Linux, możesz używać obu.Dalsza lektura
źródło
set paste
nigdy nie powinien być w twoim vimrc. Wyłącza lub resetuje wiele rzeczy, w tym mapowania w trybie wstawiania, mapowania wiersza poleceń, skróty, szerokość tekstu, wrapmargin, autoindent, smartindent, softtabstop, opcje formatowania, indentexpr i kilka innych.:h paste
ma całą listę. Większość ludzi używa niektórych lub wszystkich tych rzeczy i zastanawia się, dlaczego te ustawienia są ignorowane.:r!cat
do wklejania dosłownie.set mouse
, która może automatycznie wejść i wyjść z trybu wklejania po wklejeniu za pomocą myszy.Użyj pasty vim. Co chcesz, to wkleić to, co jest w buforze schowka "+p
Spowoduje to wybranie
+
i wklejenie go na miejscu.Jeśli używasz Linuksa,
*
to bufor X / środkowego kliknięcia (ostatni zaznaczony tekst).Vim wie, że to pasta.
W przeciwnym razie vim myśli, że wpisałeś wklejone klawisze i wykonuje własne automatyczne wcięcie (na górze skopiowanego wcięcia) aż do końca wklejania.
Uwaga: aby działało to w SSH, musisz ustawić opcję udostępniania schowka
-Y
Zobacz
man ssh
po więcej szczegółów.źródło
gvim
); vim działający w emulatorze terminali wkleja ostatnio usunięty tekstset mouse?
vim --version
czy został skompilowany z obsługą schowka,+xterm_clipboard
powinien być w wyjściuunnamed
sznurkiem.Karty zostały wstawione, ponieważ masz włączone autoindent i możesz wyłączyć to zachowanie, wyłączając autoindent (
:set noai
) przed wklejeniem do terminalu.Skomentowane linie są tworzone przez automatyczne komentowanie i można je wyłączyć, wyłączając to.
Alternatywnie do tych należy uzyskać pożądane zachowanie za pomocą przełączników
:set paste
, wklejając sformatowany kod i:set nopaste
przywracając normalne zachowanie.źródło