Ctrl + V, Bash'e (Linux kabuğu) neden yapıştırılmıyor?


192

Bir şeyi panoya kopyaladığımda ve Bash'te Ctrl+ tuşuna Vbastığımda hiçbir şey olmuyor; Ancak, sağ tıklayıp Yapıştır'ı seçmek işi yapar.

Neden? Linux'ta bu davranışın arkasında (var olduğundan eminim) makul bir sorun var mı?


25
Shift- Insertayrıca çalışır
bonyiii

33
Ben Ctrl-Shift-Vşahsen tercih ederim .
amalloy,

3
Shift + Insert tuşlarını çoğu kabuk ortamında da kullanabilirsiniz .
Fabian

4
Ya bir Ekle anahtarınız yoksa?
Ben Racicot

3
Windows 'komut isteminde de
çalışmıyor

Yanıtlar:


360

Fiziksel terminallerin günlerinde , oturum genelindeki panolar yoktu, yalnızca birkaç program dahili kopyala / yapıştır özelliğini destekledi - genellikle "tamponlar" veya "kill halkaları" adı altında - ve çeşitli farklı tuş vuruşlarını kullandılar. Örneğin, bash kabuğu kullanır CtrlKveya CtrlU"öldürür" (kes), CtrlY"yank" (yapıştır); Bu gelir emacs editör .

CtrlCUnix'teki hemen hemen her yerde , mevcut programı veya işlemi iptal etmek için kullanılan "kesme" anahtarıydı . CtrlVAnahtar genellikle "kelimesi kelimesine insert" anlamına - yani, herhangi bir ilişkili eylemi gerçekleştirmeden anlamıyla şu karakterleri yerleştirin. Örneğin, normal bir Escswitch içinde komut moduna vi editörü, ancak CtrlV, Escekleyecektir ESCbelgeye karakter.

Oturum genelindeki panodan CtrlCkopyalama ve CtrlVyapıştırma kullanımı, 1983'te Mac OS ve 1990'da Microsoft Windows 3.x ile tanıtıldı. (Önceki Windows sürümleri (1.x ve 2.x) ve ayrıca IBM OS / 2 , yalnızca kopyalamak ve yapıştırmak için IBM CUA anahtarlarını destekledi ; bu kısayollar tüm Windows sürümleri tarafından desteklenmeye devam ediyor.)CtrlInsShiftIns

Pano destekli GUI'ler Nihayet Unix'e ulaştığında, Ctrltuşlar zaten birçok terminal programı tarafından kullanılıyordu. Ek olarak, X grafik arayüzü biraz farklı mekanizmalara sahipti : "seçimler" ve "kesilmiş tamponlar". Şimdi bile, bir programdaki metni seçebilir ve açık bir fare hareketi olmadan orta fare düğmesini kullanarak ekleyebilirsiniz.

Kısacası, Xterm ve GNOME Terminali yazıldığı zaman (sanırım ikincisini kullanıyorsunuzdur), CtrlV zaten uzun yıllar boyunca tamamen farklı bir anlama sahipti ve değiştirilemiyordu. Ek olarak, X11'de zaten bir "kopyalama" metni kopyalamanın alternatif bir yöntemi vardı, bu nedenle açık kopyala / yapıştır işleminin muhtemelen Windows'taki kadar önemli olmadığı düşünülüyordu. Bu, farklı klavye kısayollarının seçilmesi gerektiği anlamına gelir - örneğin, GNOME Terminali gibi çoğu modern terminal programı CtrlShiftCve kullanır CtrlShiftV. (Xterm kullanıyorsanız, aynı kısayollar, XTerm * vt100 * çevirileri Xresource kullanılarak manuel olarak eklenebilir . Rxvt böyle bir seçeneğe sahip değildir.)

(Çoğu X11 araç kiti ayrıca, terminal programlarıyla çakışmayan CUA "kopyala" ve "yapıştır" tuşlarını da destekler. Ne yazık ki, uygulamalar oldukça tutarsızdır - CtrlInsçoğu programda "panoya" kopyalar (GTK, Qt4, ancak Xaw); ancak, ShiftInsçoğu GTK ve Qt4 programlarındaki "birincil seçimden", ancak Firefox’taki "panodan" ve şimdi kullanılmayan Xaw’daki eski modası kesilmiş tamponlardan


Bütün bunlar, bazı terminaller veya konsolları (özellikle Windows 10 konsol) yapmak bu anahtarları destekler. Windows konsolunun her zaman ayrı bir "işaretle / seç" modu olduğundan, CtrlCşimdi bağlamı temel alan iki anlamı da vardır - normal modda bir kesme gönderir, seçme modunda panoya kopyalar (tıpkı eskiden olduğu gibi Enter).

Bu arada, Windows komut satırı araçları hiçbir zaman gerçekten bir şey için kullanılmadı CtrlV , bu yüzden fazla bir şey rahatsız etmeden "yapıştırmak" zorunda kaldı. Ancak Unix benzeri terminallerde de aynı şekilde yapmak daha problemli olacaktır.


10
Hmm. Vim'de “yank” yapıştırmak yerine kopya anlamına gelir. Bu da daha mantıklı geliyor. Bu terimin buradaki anlamından emin misin?
Konrad Rudolph

11
Evet eminim. Bash, varsayılan kısayolları Emacs eşdeğerlerinden miras alır .
Grawity

4
@grawity: Son yorumunuz bir teenie biraz yanlış yönlendirilmiş. Bash iki komut satırı düzenleme modu sunar: vim modu ve emacs modu. Sadece emacs-mode çoğu kurulumda varsayılan olur. Bu, bask için bile, yank teriminin kullanımında belirsizliği artırıyor .
rahmu

1
Aha! Ben biliyordum onlar açıldığında Vimperator geliştiriciler bir hata yaptım <C-v>için isürüm 3, ama oldukça benim parmak koymak olamazdı neden .
Izkata

2
@Colin: Pano ve X seçimi arasındaki farkı hala kaçırdınız. Birkaç seçenek vardır (PRIMARY, SECONDARY, CLIPBOARD), ancak bunlardan sadece bir tanesi genellikle "pano" olarak adlandırılır - CLIPBOARD seçimi, çünkü Ctrl-C'nin kopyaladığı ve Ctrl-V'nin yapıştırdığı yer. Birincil seçim pano değil.
yerçekimi

47

CtrlShiftVYapıştırmak için kullanın .

Ctrl Diğer karakterlerde ise genellikle özel işlevler için kabuk tarafından


4
Öyleyse neden Linux özel işlevler için CTRL + ÜST KRKT kaydetmiyor; Bence kopyala-yapıştır bazı kullanıcılar tarafından bu özel fonksiyonlardan daha tipik, değil mi?
Yasser Zamani

22
Kabuklar, kesip yapıştırma işlevine sahip grafiksel Terminaller ve GUI'ler olmadan önce mevcuttu, bu nedenle argümanınız gerçekten geçerli değil. @YasserZamani
slhck

9
Ctrl + Shift + V, terminal emülatörü tarafından yürütülür (GNOME Terminalini kullandığınız varsayılarak) bash. Bir GUI ortamı dışındaysanız veya başka bir terim öykünücüsü kullanıyorsanız, bu muhtemelen işe yaramayacaktır. Bu komutun taşınabilir olduğunu düşünmeyin.
rahmu

@ rahmu Oh, bunun hakkında hiçbir fikri yoktu. Sadece stok Ubuntu yüklemelerini kullanın. Evrensel bir komut var mı?
Akash

2
Panoya erişmek için muhtemelen bir tane yoktur (birincil seçim için yalnızca Shift + Ins). Pano bile Tty's erişilebilir bir X11 şeydir. Ancak, Ctrl + Shift + V GNOME Terminali, Xfce4 Terminali, KDE Konsole; bu en popüler GUI ortamlarını kapsar.
Grawity

20

İşte genel amaçlı kopyala yapıştır ayarlarınız popüler terminallerle birlikte:

gnome-terminal (Linux'ta en popüler)
Kopyala : CtrlShiftC
Yapıştır : CtrlShiftV
Not : Kopyala ve middle-clickyapıştırmak için seçin , aynı zamanda çalışır, ancak alternatif bir pano kullanır.

PuTTY (Windows en popüler terminali)
Kopya : (fare ile seçmek, hayır klavye etkileşimi)
Yapıştır : Right-click (veya daha güvenilir: shiftRight-click)
Not : fare girişi (gibi almak uygulamalar vimve links) çalabilir Right-click- shiftRight-clickher zaman bir uygulamaya çalışacaktır.

OSX Terminal
Copy : AppleC
Yapıştır : AppleV
Not: Fare kontrolünü alan ( vimve benzeri links) uygulamalar, metni seçmenin ne anlama geldiğini geçersiz kılabilir; bu durumda kopya, beklediğiniz şekilde çalışmaz. Bu durumlarda, Controlseçmek için fareyi sürüklerken basılı tutun . Uygulamalarla fare etkileşimi, terminal ayarlarınızda varsayılan olarak devre dışıdır, bu nedenle çoğu insan bunu bilmez.


cmd.exeWindows'ta PuTTY'den daha popüler değil mi? :-)
Ben

@Ben Bir SSH terminali olarak değil.
tylerl

1
Hayır, cmd.exebir SSH terminali değil. Bu çok doğru.
Ben

3
@Ben: Hiç bir terminal değil - sadece bir kabuk. Windows'taki varsayılan terminal, csrss'nin "Windows Konsolu" bileşenidir.
12:34

@Ben ancak yapıştırmak için sağ tıklayın da hızlı düzenleme modunda çalışır cmd.exe(ve menü> düzenleme> yapıştırma'yı açmak istemiyorsanız, orada tek yoldur) . Win10 öncesi komut isteminde kısayol yok
phuclv

17

CtrlAnahtarın bir harfle birlikte, büyük harfin ASCII değerinden 64 çıkarılması sonucu bulunan ASCII kontrol karakterlerini oluşturması köklü bir gelenektir . Bu hesaplama Ctrl- A1'e vb. Eşlenir. Mesela Ctrl- Iolduğunu Tabve Ctrl- Jsatır besleme edilir.

Ctrl- için benzer bir gelenek yok Shift. Ctrl- Shift- Vbelirli bir karakter üretmesi beklenmez.

Terminal emülatörleri geleneklerden şeffaf bir şekilde geçerek geleneği desteklemeli Ctrlve bu terminal penceresinden işletilen programlara karakter girişi olarak görünmesine izin vermelidir . Terminal tabanlı programlar kontrol tuşlarını komutlarla eşleştirir. Örneğin, Bash kullanır Ctrl- Vbir komut olarak "bir sonraki karakteri tam anlamıyla al" anlamına gelir. Bu, bir kontrol karakterini komut satırına yerleştirmenizi sağlar. Terminal kontrol tuşlarını kendi kullanımı için çalarsa, bu komutlar kullanılamaz hale gelir. Öyleyse görüşme Ctrl- Vbir meta fonksiyon için söz konusu değil (en azından varsayılan konfigürasyonda).

Bununla birlikte, terminal emülatörleri Ctrl- Shift- Vbir karakter yaratması beklenmeyen - kesmekte serbesttirler . Ctrl- Shift- Vstandart değil; bu bir Gnome Terminal olayı (diğer bazı terminallerde olabilir).

X tabanlı Unix masaüstlerinde, kuralın kopyalanması için herhangi bir komut gerekmemesidir. Sadece metni seç. Orta düğme, bu metni başka bir yere yapıştırır. Bunun Xterm, Gnome Terminali ve Firefox'ta çalıştığını göreceksiniz.

Ctrl- Vtaklidi olan Microsoft Windows kongre vardır Apple- VMacintosh'tan.


3
Tam olarak çıkarma değil - geleneksel olarak Ctrl, karakterin 6. ve 7. bitlerini temizledi ; bu nedenle, Ctrl + Shift + letter çoğu terminalde Ctrl + Letter ile aynı şekilde çalışır (kopyala / yapıştır kısayollarında olduğu gibi, terminal tarafından açıkça geçersiz kılmadığı sürece).
yerçekimi

1
Anahtarlar ASCII standardına göre esasen rastgele sıralandığından, program ROM'u ASCII kodlarının oluşturulmasına yardımcı olan birkaç arama tablosu içerir. ... Başka bir tuşa basıldığında KONTROL tuşuna basılması, başka bir masa aranmasına neden olur. [VT100 series Teknik El Kitabı, 4.4.9.3, Dijital].
Kaz,

1
@Linger düzenleme için teşekkürler. İyi işliyor, ancak tüm bu <kbd>etiketleri gelecek yazılara yazmamın bir yolu yok .
Kaz,

Ctrl-Aolduğunu 1. Bunu nasıl deneyebilirim? Gnome terminalim, bastığımda hiçbir şey yapmıyor Ctrl-A.
robert

3

Bana göre, kabuktaki yapıştırmayı kopyalamanın en basit yolu:

İstediğiniz kodu seçin ve ardından simgesine tıklayarak mouse-middle-key


1
Bir orta fare tuşuna sahip olduğunuz sürece.
JPIerson

1
@jpierson bunu şiddetle tavsiye ediyorum, ancak sizin xdotool click 2için üçüncü düğmeye tıklamayı taklit eden küçük bir senaryo yazabilirsiniz . Daha sonra, hangi pencere yöneticisi / masaüstü ortamında olursanız olun, bu betiği bir anahtara (örneğin mod i, eklemek için) ya da elinizde bulunan herhangi bir tuş dizisine (veya hangi mod ne demek istediğine - hangisini bağladığınıza bağlı olarak) bağlayabilirsiniz
dylnmc

2

Kopyalamak ve yapıştırmak için insert klavye düğmesini kullanabiliriz (Eski klavyelerde bu eksik olabilir)

Kopyala : CtrlInsert
Yapıştır :CtrlShiftInsert


1

Ayrıca tembel hissediyorsanız orta düğmeyi ve fareyi kullanabilirsiniz ve bir metin belgesi, komut dosyası veya web veya forumdan bir komut seçebilirsiniz. amaçlanan komutu seçtikten sonra terminalinize gidin ve farenin üzerindeki orta düğmeye tıklayın. Bu yöntemi, sağ tıklayıp yapıştırmanın normal davranışını desteklemiyor gibi görünen linux kullandığım için kullanıyorum. Bir dosya işleyicisi penceresinde, sadece bir terminal penceresinde değil. neden bilmiyorum ama sessiz olduğum için çok kullanışlı orta düğme yöntemi hakkında öğrendim! ;-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.