X11에서 터미널 창 사이에 탭 복사 및 붙여 넣기


11

두 터미널 창 사이에서 X11 마우스 선택을 사용하여 텍스트를 복사하여 붙여 넣을 때 탭은 종종 공백으로 변환되지만 항상 그런 것은 아닙니다. 이것은 관련된 터미널 응용 프로그램과 그 내부에서 실행되는 프로그램에 의존하는 것으로 보입니다.

이것이 실험을 통해 얻은 것입니다.

  • 소스 (복사) 쪽에서 실행중인 내용에만 의존합니다. 대상 (붙여 넣기) 쪽에서는 소스가 탭을 유지 한 경우 실행중인 항목에 상관없이 탭을 붙여 넣습니다.
  • gnome-terminal소스 측 에서만 탭을 유지합니다. xterm그리고 konsole하지 마십시오.
  • 탭은 파일을 사용하여 출력 된 경우에만 유지됩니다 cat. 같은 다른 응용 프로그램 less, vim, emacs, 또는 nano탭을 보존하지 않습니다.

이에 대한 설명은 무엇입니까? 이 버그가 konsole및에 있습니까 xterm, 아니면 다르게 구성 할 수 있습니까? less출력에서 탭을 유지하도록 구성 할 수 있습니까 ?

답변:


3

네, 당신의 관찰은 정확합니다. 복사-붙여 넣기시 대상은 소스에서 데이터를 가져옵니다. 탭을 표시 할 때 xterm(및 konsole)은 분명히 터미널 자체로 변환합니다 (터미널 내부에서 실행중인 응용 프로그램이 이미 수행하지 않은 경우). 따라서 선택한 텍스트에 대한 요청이있을 때 제공하는 것은 공백입니다.

몇 년 전 xterm-maintainer의 답변을 모호하게 기억하며 수정 하기매우 어려울 것이라고 주장했습니다 .

확실 하지 않습니다. 올바른 방법 gnome-terminal어떻 습니까? 그러나 다른 방법은 터미널 응용 프로그램 내에서 실행하는 대신 gvim(그래픽 버전 vim) 을 사용하는 것입니다 .gvim 에서vim 안전하게 복사하여 붙여 넣을 수 있습니다 탭을 잃지 않고.


0

특히 Makefiles탭이 필요한 경우 문제가 될 수 있습니다 . 불행하게도, 다른 프로그램의 문제는 관련이 없습니다. 각각은 아마도 매우 다른 해결책을 가질 것입니다.

vim 의 경우 파일의 a :set noexpandtab또는 장소 set noexpandtab를 미리 수행해야 ~/.vimrc합니다. 특정 파일 형식 만 noexpandtab설정 ~/.vimrc하려면 다음과 같은 자동 명령을 수행 할 수 있습니다 .

"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

이것은 탭에 대해 기본적으로 4 개의 공백을 설정하고 vim쉘 스크립트와 Makefile에 대해 예외를 만듭니다.

와 같은 다른 프로그램 less에 대해서는 맨 페이지를보십시오. 구성 파일, 환경 변수 또는 필요한 명령 줄 옵션이있을 수 있습니다. 적은 매뉴얼 페이지를 보면 :

-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.

당신이 주목하는 것은 버그가 아닙니다. "기능입니다." 유일한 문제는 전원을 끄는 방법을 알아야한다는 것입니다.


2
less -xn탭 문자가 아닌 n 개의 공백을 사용하도록 구성합니다. -U탭을으로 표시합니다 ^I. 텍스트를 복사하면 탭 문자를 붙여 넣을 수 있도록 리터럴 탭 문자를 내보내는 방법을 찾지 못했지만 방법을 알고 싶습니다.
매트 맥 클루 어

Roff ( troff& nroff) 에서 탭 스톱 은 최신 워드 프로세서 (OpenOffice, Microsoft Word 등)의 "룰러"도구 모음과 같이 서로 독립적으로 설정할 수 있습니다. 그러나 실제로 맨 페이지에서는 사용자 지정 탭 중지를 거의 사용하지 않습니다.

mandoc(1)또한 사용자는 -O indent=N(기본값은 5 열)을 사용하여 명령 줄에서 기본 들여 쓰기 너비를 무시할 수 있습니다 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.