Kiedy kopiuję coś do schowka i naciskam Ctrl+ Vw Bash, nic się nie dzieje; Jednak kliknięcie prawym przyciskiem myszy i wybranie Wklej wykonuje pracę.
Dlaczego? Czy jest jakiś rozsądny problem (jestem pewien, że istnieje) za tym zachowaniem w Linuksie?
linux
bash
keyboard-shortcuts
copy-paste
Yasser Zamani
źródło
źródło
Shift
-Insert
również działaCtrl-Shift-V
osobiście.Odpowiedzi:
W czasach fizycznych terminali nie istniały schowki obejmujące całą sesję, tylko kilka programów obsługiwało wewnętrzne kopiowanie / wklejanie - często pod nazwą „buforów” lub „zabójczych pierścieni” - i używało różnych różnych naciśnięć klawiszy. Na przykład, powłoka bash używa CtrlKlub CtrlU„zabija” (wycina), CtrlY„szarpa” (wkleja); ten pochodzi z tej emacs edytora .
CtrlCprawie wszędzie w Uniksie był klawisz „przerwania” , używany do anulowania bieżącego programu lub operacji. CtrlVKlucz często oznaczało „verbatim insert” - czyli wstawić następujące charakter dosłownie bez wykonywania żadnych powiązanych działań. Na przykład normalnym Escprzełącza się w tryb w poleceniu vi edytora, ale CtrlV, Escbędzie wstawić
ESC
znak do dokumentu.Korzystanie z funkcji CtrlCkopiowania i CtrlVwklejania ze schowka dla całej sesji zostało wprowadzone przez Mac OS w 1983 roku i Microsoft Windows 3.x w 1990 roku. (Wcześniejsze wersje Windows (1.x i 2.x), a także IBM OS / 2 , obsługiwane tylko klucze IBM CUACtrlIns do kopiowania i ShiftInswklejania; skróty te są obsługiwane przez wszystkie wersje systemu Windows).
Kiedy GUI z obsługą schowka w końcu dotarły do Uniksa, Ctrlnaciśnięcia klawiszy były już używane przez wiele programów terminalowych. Ponadto interfejs graficzny X miał nieco inne mechanizmy : „selekcje” i „bufory cięcia”. Nawet teraz możesz zaznaczyć tekst w jednym programie i wstawić go za pomocą środkowego przycisku myszy, bez żadnej wyraźnej operacji kopiowania.
Krótko mówiąc, do czasu napisania Xterm i GNOME Terminal (domyślam się, że używasz tego drugiego), CtrlV już od wielu lat miało ono zupełnie inne znaczenie i nie mogło być zmienione. Ponadto alternatywna metoda kopiowania tekstu - „zaznaczenie” - była już obecna w X11, więc jawne działanie kopiuj / wklej prawdopodobnie nie było tak ważne, jak byłoby w systemie Windows. Oznacza to, że musiały zostać wybrane różne skróty klawiaturowe - na przykład większość nowoczesnych programów terminalowych, takich jak GNOME Terminal, użyj CtrlShiftCi CtrlShiftV. (Jeśli używasz Xterm, te same skróty można dodać ręcznie, korzystając z Xresource XTerm * vt100 * . Rxvt nie ma takiej opcji).
(Większość zestawów narzędzi X11 obsługuje także klawisze CUA „kopiuj” i „wklej”, które nie powodują konfliktu z programami terminalowymi. Niestety implementacje są raczej niespójne - CtrlInskopiowanie do „schowka” w większości programów (GTK, Qt4, ale ignorowane przez Xaw); jednak ShiftInswkleja się z „podstawowej selekcji” w większości programów GTK i Qt4, ale z „schowka” w Firefoksie i z przestarzałych buforów cięcia w przestarzałym Xaw.)
Wszystko, co powiedział, niektóre terminale lub konsole (w szczególności konsoli systemu Windows 10) zrobić wspierać te klucze. Ponieważ konsola Windows zawsze miała osobny tryb „zaznacz / wybierz”, CtrlCteraz ma również dwa znaczenia oparte na kontekście - w trybie zwykłym wysyła przerwanie, w trybie wyboru kopiuje do schowka (tak jak Enterkiedyś).
Tymczasem narzędzia wiersza polecenia systemu Windows nigdy tak naprawdę nie były używane CtrlV do niczego, więc musiały „wklejać” się, nie zakłócając niczego. Robienie tego samego na terminalach uniksopodobnych byłoby jednak bardziej problematyczne.
źródło
<C-v>
sięi
w wersji 3, ale nie potrafił wskazać palcem dlaczego .Użyj CtrlShiftVdo wklejenia.
Ctrl z innymi znakami jest zwykle używany przez powłokę do specjalnych funkcji.
źródło
bash
sam. Jeśli kiedykolwiek jesteś poza środowiskiem GUI lub używasz innego emulatora terminów, prawdopodobnie to nie zadziała. Nie sądzę, że to polecenie jest przenośne.Oto ogólne ustawienia wklejania kopii z popularnych terminali:
gnome-terminal (najpopularniejszy w systemie Linux)
Kopiuj : CtrlShiftC
Wklej : CtrlShiftV
Uwaga : Wybierz, aby skopiować i middle-clickwkleić również działa, ale używa alternatywnego schowka.
PuTTY (najpopularniejszy zacisk w Windows)
Kopiowanie : (Proszę zaznaczyć myszką, bez interakcji klawiatury)
Pasta : Right-click (lub bardziej wiarygodnie: shiftRight-click)
Uwaga : Aplikacje, które mają wejście myszy (jak
vim
ilinks
) może kraść Right-click- shiftRight-clickbędzie zawsze pracować w dowolnej aplikacji.Kopiowanie terminala OSX : AppleC
Wklej : AppleV
Uwaga: Aplikacje, które przejmują kontrolę myszy (jak
vim
ilinks
) mogą zastąpić sposób zaznaczania tekstu, w takim przypadku kopiowanie nie będzie działać w oczekiwany sposób. W takich przypadkach przytrzymaj wciśnięty Controlprzycisk myszy, aby wybrać. Interakcja myszy z aplikacjami jest domyślnie wyłączona w ustawieniach terminalu, więc większość ludzi nawet o tym nie wie.źródło
cmd.exe
bardziej popularny niż PuTTY w systemie Windows? :-)cmd.exe
nie jest terminalem SSH. To bardzo prawda.cmd.exe
(i jest to jedyny sposób, jeśli nie chcesz otworzyć menu> edycja> wklej) w trybie szybkiej edycji . Nie ma skrótu w wierszu poleceń sprzed win10Jest głęboko zakorzenioną tradycją, że Ctrlklucz wraz z literą generuje znaki sterujące ASCII znalezione przez odjęcie 64 od wartości ASCII wielkiej litery. To obliczenie odwzorowuje Ctrl- Ana 1 i tak dalej. Na przykład Ctrl- Iis Taband Ctrl- Jis linefeed.
Nie ma podobnej tradycji dla Ctrl- Shift. Ctrl- Shift- Vnie oczekuje się, aby wywoływał specyficzny charakter.
Emulatory terminali muszą wspierać tradycję poprzez transparentne przechodzenie przez Ctrlkonwencję, pozwalając jej pojawiać się jako wejście znaków do programów obsługiwanych przez to okno terminala. Programy terminalowe mapują klawisze sterujące na polecenia. Na przykład Bash używa Ctrl- Vjako polecenia, które oznacza „dosłownie weź następny znak”. Umożliwia to osadzenie znaku sterującego w wierszu polecenia. Jeśli terminal kradnie klawisze sterujące na własny użytek, takie polecenia stają się niedostępne. Przechwytywanie Ctrl- Vbo meta-funkcja nie wchodzi w rachubę (przynajmniej w konfiguracji domyślnej).
Jednak emulatory terminali mogą przechwytywać Ctrl- Shift- Vco nie powinno generować postaci. Ctrl- Shift- Vnie jest standardem; jest to Gnome Terminal (może być w niektórych innych terminalach).
Na komputerach Unix opartych na Xie konwencja jest taka, że do kopiowania nie jest potrzebne żadne polecenie. Po prostu zaznacz tekst. A środkowy przycisk wkleja ten tekst w innym miejscu. Przekonasz się, że działa zarówno w Xterm, Gnome Terminal i Firefox.
Ctrl- Vjest konwencją Microsoft Windows, która jest imitacją Apple- Vz Macintosha.
źródło
<kbd>
tagi w przyszłych postach.Ctrl-A
jest1
. Jak mogę tego spróbować? Mój terminal Gnome nic nie robi po naciśnięciuCtrl-A
.Dla mnie najprostszym sposobem na skopiowanie wklejania w powłoce jest:
Wybierz kod, który chcesz, a następnie wklej go, klikając mouse-middle-key
źródło
xdotool click 2
do emulacji kliknięcia trzeciego przycisku. Następnie, w dowolnym menedżerze okien / środowisku pulpitu, w którym jesteś, możesz powiązać ten skrypt z kluczem - powiedzmymod
i
(dla wstawiania) lub dowolnymi dostępnymi skrótami klawiszowymi (lub jakimkolwiek modem, co może oznaczać - co tak naprawdę zależy od miejsca, w którym je powiążesz)Możemy użyć przycisku wstawiania klawiatury do kopiowania i wklejania (w starych klawiaturach może brakować)
Kopiuj : CtrlInsert
Wklej :CtrlShiftInsert
źródło
możesz również użyć środkowego przycisku myszy, jeśli czujesz się leniwy i wybierz polecenie z dokumentu tekstowego, skryptu, strony internetowej lub forum. po wybraniu zamierzonego polecenia wystarczy przejść do terminala i kliknąć środkowy przycisk myszy. Używam tej metody, ponieważ używam linuksa szczeniaka, który nie wydaje się wspierać normalnego zachowania kliknięcia prawym przyciskiem myszy i wklejenia. robi to w oknie obsługi plików, po prostu nie w oknie terminala. nie wiem dlaczego, ale jestem cicho zadowolony, że dowiedziałem się o metodzie środkowego przycisku, bardzo przydatny! ;-)
źródło