X11のターミナルウィンドウ間でタブをコピーして貼り付ける


11

2つのターミナルウィンドウ間でX11マウス選択を使用してテキストをコピーして貼り付けると、タブがスペースに変換されますが、常にではありません。これは、関連する端末アプリケーションとその内部で実行されているプログラムに依存するようです。

これは私が実験によって見つけたものです:

  • ソース(コピー)側で何が実行されているかにのみ依存します。ソースが保持している場合、ターゲット(貼り付け)側は実行中のタブに関係なくタブを貼り付けます。
  • gnome-terminalソース側でのみタブが保持されます。 xtermそしてkonsoleません。
  • タブは、ファイルがを使用して出力されている場合にのみ保持されますcat。などの他のアプリケーションlessvimemacs、またはnanoタブを保存しないでください。

これの説明は何ですか?これらのバグはとにkonsoleありxtermますか、それとも異なる設定が可能ですか?less出力でタブを保持するように構成できますか?

回答:


3

はい、あなたの観察は正しいです。コピーアンドペーストすると、ターゲットがソースからデータを取得します。タブを表示するとき、xterm(およびkonsole)は明らかに、タブ自体をスペースに変換します(ターミナル内で実行中のアプリケーションがまだ実行していない場合)。したがって、選択したテキストに対するリクエストが来たときに、提供する必要があるのはスペースだけです。

何年も前のxtermの保守担当者からの応答を漠然と覚えていて、修正するのは非常に難しいと主張しています...

私は、よく分からないどのように gnome-terminal正しいことを行いますが、私は彼らがうれしい:)別の方法としては、使用することですgvim(のグラフィカルなバージョンをvim) -の代わりに実行するのではvim、端末のアプリケーションの中に-あなたは安全にコピー&ペーストすることができますから gvimを、タブを失うことなく。


0

これは、特にMakefilesタブが必要な場合に問題になることがあります。残念ながら、異なるプログラムの問題は関連していません。おそらくそれぞれに非常に異なるソリューションがあります。

vimを実行するには、ファイルを実行する:set noexpandtabかファイルに配置する必要があります。特定のファイルタイプのみを設定したい場合は、自動コマンドを実行できます。set noexpandtab~/.vimrcnoexpandtab~/.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の例外が作成されます。

のような他のプログラムについては、lessmanページをご覧ください。構成ファイル、環境変数、または必要なコマンドラインオプションがある場合があります。以下のmanページを見てください:

-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(troffnroff)では、最新のワードプロセッサ(OpenOffice、Microsoft Wordなど)の「ルーラー」ツールバーのように、タブストップを互いに独立して設定できることに注意してください。ただし、実際には、マンページでカスタムタブストップが使用されることはほとんどありません。

mandoc(1)また、ユーザーはコマンドラインからデフォルトのインデント幅をオーバーライドできます-O indent=N(デフォルトは5列​​)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.