İstenmeyen değişiklik satırı olan bir terminalden tek satırlık uzun bir metin kopyalama


14

locate ... | less aslında tek bir hat olmasına rağmen, terminalde birkaç satır olarak gösterilen uzun bir yol çıkarır.

Fare ile metni seçip Ctrl+ Shift+ tuşuna basarak terminaldeki yolu kopyalarım C. Bir metin dosyasına yapıştırdığımda, tam olarak terminalde gösterildiği gibi metinde istenmeyen değişiklik satırı alıyorum.

Ancak bazen locate ... | less, istenmeyen satır değişikliği yapmadan uzun bir yol çıktısını kopyalayabildiğimi ve bazen yapamadığımı hatırlıyorum . Farklı bir şey yaparsam fark etmiyorum.

Sorunun olmayacağından nasıl emin olacağım? Teşekkürler!

İşletim Sistemim: Ubuntu 12.04.

Terminalim: Gnome Terminali 3.4.1.1



Ancak Ctrl + Shift + C bazen uzun bir satırı değişiklik satırını kopyalamadan kopyalayabilir. Hala farklı problemler, sanırım.
Tim

Yani, Q'nuz bu davranışı neden veya nasıl kontrol edeceğinizle ilgili daha fazla mı?
slm

Evet. Çıkışı bir dosyaya yönlendirerek değil, kısayol tuşunu (sanırım en hızlı yoludur) kullanarak terminalden metin kopyalarım
Tim

Davranışın bir yolla diğer yolla ne zaman ilgili olduğu hakkında daha fazla şey var mı?
slm

Yanıtlar:


3

Terminalde görüntülenenleri kopyalamak yerine (sadece ekrana uyanlarla) gerçek metni kopyalayın. Xsel veya xclip harici yardımcı programlarından birini kullanın (çoğunlukla aynı özelliklere sahipler, bu cevapta xsel kullanacağım) veya X panosuna veri kopyalamak için. Panoya kopyalamak için, istediğiniz içeriği standart girişe aktarın. Panodan yapıştırırken içerik standart çıktıya yazılır.

Daha azında, |bir komut satırını bir komut aracılığıyla iletmek için komutu kullanın. Üzerinde işlem yapmak istediğiniz ilk satıra mmilerleyin, bir işareti ayarlamak için yazın, son satıra gidin ve yazın |mxsel -bve tuşuna basın Enter. İki işaret önceden tanımlanmıştır: ^dosyanın başlangıcı için, dosyanın $sonu için. Böylece, tüm dosyayı kopyalamak için kullanın <|$xsel -b. Tek bir satır kopyalamak için kullanın mm|mxsel -bve Enter.

-bPano yerine birincil seçime kopyalama seçeneğini kaldırın .


3

Bunun gerçek davranışı şudur:

içerideyseniz lessve çok uzun bir çizgiye sahip bir dosyanız varsa, uzun çizginin üzerinde aşağı kaydırır ve yukarı kaydırırsanız, metnin tamamını kopyalarken birden çok çizginiz olur. Bundan sonra, bölünmüş çizgileri terminalin altından aşağı kaydırdığınızda ve çizgileri tekrar yukarı kaydırdığınızda, satır kesmeleri yeniden kaldırılır.

Görselleştirme için:

resim açıklamasını buraya girin


2

Şunları yapabilirsiniz kopya çıktı hatları ekstra satırbaşıyla olmadan metin olsaydı (satır sonları) çıkış doğrudan terminale.
Terminal, gerçek hattın nerede olduğunu takip edebilir.

Ancak, hatlar lessveya benzer bir pagerprogram tarafından çıktı verildiyse, terminal yeni satırların nerede olduğunu bilmez. Çağrı cihazı terminali karakterlerin tam ekranı olarak kullanır ve terminale "bu karakterleri oraya koy" ve kaydırma gibi işlemleri söyler. Ancak, terminal için, yeni satırların nerede tasarlandığını görmenin bir yolu yoktur.


2
Bazen satır sonlarını kopyaladığımı ve bazen yapmadım. Zaman içinde tutarsızdır. Bugün her ikisi de locate <something> | lessiki farklı durumda Ctrl-shift-c olduğunda oldu .
Tim

Daha azı ekranını kendisi çizer, böylece terminal hatların nerede bittiğini görmez. Ancak daha az yapılandırılabilir ekran yüksekliğine uyan kısa dosyalar için hiçbir şey yapmayın. Dolayısıyla, vakalar arasındaki farkın daha azının farklı bir modda olması mümkündür. (bir göz atın echo $LESS, belki daha az ilginç seçenekler vardır.)
Volker Siegel

@Zaman bu beni yıllardır rahatsız ediyor. Belki @ niknah'ın cevabı nedenini gösterir? Sık sık -Smod arasında geçiş yapıyorum, belki de daha da kötüleşir.
Dan Gravell

1
@Tim: İşletim sisteminizde ve daha az sürümünüzde doğru olabilecek veya olmayabilecek bir şey keşfettim: Kopyalama davranışı, hedef satıra daha az ulaştığım şekle göre değişir. İleriye doğru arama yapıyorsam, kopya sarma satırlarını içermez (yani orijinal uzun satır içeriğini kopyalar). Ancak, hedef satıra ulaşmak için dosyada geriye doğru arama yaptıysam, kopya yeni satırları içerir ve uzun satırı birden çok ayrı satıra böler. Mac ve Linux'ta benim için tutarlı görünüyor.
erik. Kardeşler

2

İçinde less, sarılmış birden çok metin satırı seçip kopyalarsanız, tek satır olarak aşağı iner.

Tuşuna basıp PgUpaynı metni kopyalarsanız, birden çok satır olarak aşağı iner.

PgDniyi, oklar iyi. Ancak PgUpmetnin bölünmesine neden olur.


Davranışın gerçek nedeni bu değil. Cevabımı görün: unix.stackexchange.com/a/445590/105308
bobbel

0

Amaç kopyalayıp yapıştırmaksa, veya catyerine kullanıyorum ve sonra terminal, görüntülenmekte olandan ziyade olduğu gibi yakalar.lessmore

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.