X11에서 터미널 창 사이에 탭 복사 및 붙여 넣기 것은 아닙니다. 이것은 관련된

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

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

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

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



답변

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

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

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


답변

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

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


답변