X11'de terminal pencereleri arasında sekmeleri kopyalayıp yapıştırma


11

İki terminal penceresi arasında X11 fare seçimini kullanarak metin kopyalayıp yapıştırdığımda, sekmeler genellikle her zaman olmamakla birlikte boşluklara dönüştürülür. Bu, ilgili terminal uygulamalarına ve bunların içinde çalışan programlara bağlı gibi görünmektedir.

Deneylerle öğrendiğim şey bu:

  • Yalnızca kaynak (kopya) tarafında nelerin çalıştığına bağlıdır. Hedef (yapıştırma) tarafı, kaynak koruyorsa, ne çalışıyor olursa olsun sekmeleri yapıştırır.
  • Sadece gnome-terminalkaynak tarafta sekmeleri korur. xtermve konsoleetmeyin.
  • Sekmeler yalnızca dosya kullanılarak çıkarılmışsa korunur cat. Gibi diğer uygulamalar less, vim, emacs, veya nanosekme korumuyor.

Bunun açıklaması nedir? Bu hatalar mı konsoleve xtermya onlar farklı yapılandırılabilir? Can lessve çıktıda sekmeleri korumak için yapılandırılabilir?

Yanıtlar:


3

Evet, gözleminiz doğru. Kopyala yapıştırdığınızda, hedefin verileri kaynaktan almasıdır. Sekmelerinizi görüntülerken, xterm(ve konsole), görünüşe göre onları boşluklara dönüştürür (terminalin içinde çalışan uygulama bunu henüz yapmadıysa). Böylece, seçilen metin için bir istek geldiğinde, sunmaları gereken tek şey boşluklardır.

Hatta bir xterm-keeper'ın yıllar önce verdiği bir cevabı bile hatırlıyorum , düzeltmenin çok zor olacağını iddia ediyorum ...

Emin, değilim nasıl gnome-terminal doğru olanı yapar, ama onlar başka alternatif kullanım etmektir :) yapmak sevindim gvim(grafiksel versiyonu vim) - yerine çalışan vimbir terminal uygulama içinde - kopyalayıp yapıştırın güvenle yapabilirsiniz dan gvim , sekmeleri kaybetmeden.


0

Bu bazen, özellikle Makefilessekmeler gerektiren bir sorun olabilir . Ne yazık ki, farklı programlarla ilgili sorunlar ilgili değildir. Her birinin muhtemelen çok farklı bir çözümü olacaktır.

Vim için dosyanızda bir a :set noexpandtabveya yer set noexpandtaboluşturmalısınız ~/.vimrc. Sadece belirli dosya türlerinin noexpandtabayarlanmasını istiyorsanız, o zaman ~/.vimrcbenimkinde aşağıdakilere sahip olduğunuz bir otomatik komut yapabilirsiniz :

"indenting defaults: 4 spaces for an indent
set shiftwidth=4
set softtabstop=4
set expandtab

"exceptions to indenting for specific languages and files--------
"for shell scripts: 2 spaces for an indent
autocmd filetype sh setlocal shiftwidth=2
autocmd filetype sh setlocal softtabstop=2

"for Makefiles: use tabs for indents
autocmd filetype make setlocal tabstop=8
autocmd filetype make setlocal noexpandtab

Bu, bir sekme için varsayılan olarak 4 boşluk ayarlayacak vimve kabuk komut dosyaları ve Makefiles için istisnalar oluşturacaktır.

Gibi diğer programlar için less, orada sayfalarına bakmayı deneyin. İhtiyacınız olan şey için yapılandırma dosyaları, çevresel değişkenler veya komut satırı seçenekleri olabilir. Daha az adam sayfasına bakarken:

-xn,... or --tabs=n,...
       Sets tab stops.  If only one n is specified, tab stops  are  set
       at  multiples  of n.  If multiple values separated by commas are
       specified, tab stops are set at those positions, and  then  con-
       tinue  with  the  same  spacing  as  the last two.  For example,
       -x9,17 will set tabs at positions  9,  17,  25,  33,  etc.   The
       default for n is 8.

Fark ettiğiniz şey bir hata değil. "Bu bir özellik." Tek sorun, nasıl kapatılacağını bilmeniz gerektiğidir.


2
less -xnsekme karakteri yerine n boşluk kullanacak şekilde yapılandırır. -Usekmesini olarak görüntüler ^I. Değişmez bir sekme karakteri yaymanın bir yolunu bulamadım, böylece metni kopyalamak bir sekme karakteri yapıştırır, ancak nasıl olduğunu bilmek isterim.
Matt McClure

Roff ( troff& nroff) 'da sekmelerin, modern kelime işlemcilerindeki "cetvel" araç çubuklarına (OpenOffice, Microsoft Word ve diğerleri) benzer şekilde birbirinden bağımsız olarak ayarlanabileceğini belirtmek gerekir. Bununla birlikte, yönetim sayfalarında nadiren özel sekme durakları kullanılır.

mandoc(1)ayrıca kullanıcıların -O indent=N(varsayılan olarak 5 sütuna) kullanarak komut satırından varsayılan girinti genişliğini geçersiz kılmalarına olanak tanır .
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.