Portál AbcLinuxu, 7. května 2025 22:47

Dotaz: copy past z konzole přidá dlouhé konce řádků s mezerami

11.1.2012 09:13 xsouku04 | skóre: 7
copy past z konzole přidá dlouhé konce řádků s mezerami
Přečteno: 323×
Odpovědět | Admin
Používám kde terminál konsole, když píši nějaký text ve vimu v konzoli na více řádků a chci to pak copy and past (použiji myš) do jiného okna tak se mi na konec řádků přidají nechtěné mezery.

Takže pokud bych chtěl něco nakopírovat např na wiki nebo do mailu, tak je to pak hnusné rozjeté. Když je to kratší text, řeším to ručním odmazávání těch mezer, v případě delšího textu to pastnu do gvim (gvim to už nedělá) a regulárem nechám smazat veškeré mezery na konci řádků. Nevíte někdo jak se tomuto vyhnout ?

Ještě jsem zkusil to stejné v xtermu, tam to neudělalo. Nicméně pokud se přihlásím na server a tam vlezu do screenu nebo tmuxu dělá to zase. Většinou pracuji právě uvnitř tmuxu a navíc ještě screenu, takže jiný terminál pro mne není řešení. Nevíte jak se tohoto zbavit úplně ?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 11.1.2012 10:16 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Odpovědět | | Sbalit | Link | Blokovat | Admin
a co ten text nekopirovat oznacenim v konsoli, ale oznacenim ve vimu a zkopirovanim do prislusneho registru?
Tedy napr.
  1. oznacit ve visualnim rezimu pomoci v, nebo po radcich V
  2. ulozit do registru * pomoci "*y
  3. pastnout
Don't panic!
11.1.2012 12:22 xsouku04 | skóre: 7
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Jasně v rámci jednoho vimu vždy kopíruji pomocí visual režimu. Někdy ale potřebuji nějakej odstaveček textu zkopírovat třeba mezi různými servery a tam je nejpohodlnější X clipboard. Bohužel takto to dopadne.

No mohl bych si namapovat to mazání mezer na konci řádků na nějakou klávesu, aby ve vimu kam to pastnu už s tím nebylo tolik práce.
Tarmaq avatar 11.1.2012 12:51 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
nerozumim v cem je problem, ja timhle bezne kopiruju pomoci X clipboardu..
viz. :help registers
Don't panic!
11.1.2012 14:06 xsouku04 | skóre: 7
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Aha už vidím * a + jsou taková speciální záhadná jména registrů, které mají umožňovat propojení s X clipboardem.

Use these registers for storing and retrieving the selected text for the GUI. See |quotestar| and |quoteplus|. When the clipboard is not available or not working, the unnamed register is used instead. For Unix systems the clipboard is only available when the |+xterm_clipboard| feature is present. {not in Vi}

Note that there is only a distinction between "* and "+ for X11 systems. For an explanation of the difference, see |x11-selection|. Under MS-Windows, use of "* and "+ is actually synonymous and refers to the |gui-clipboard|.

Víc jsem se dozvěděl zde

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Ale zdá se není to tak jednoduché, podpora musí být přikompilována do vimu.

To zjistím příkazem vim --version|grep clipboard.

Taky mi zatím není zřejmé jestli to zafunguje i na dálku a teleportuje se to z vim na serveru do mého X clipboardu na lokálu.

Ještě budu experimentovat a podám zprávu.
11.1.2012 14:28 xsouku04 | skóre: 7
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Tak jsem testoval a tato finta funguje jen pokud X a vim běží na stejném stroji. Pokud běží na jiném stroji, tak se to nikam nevloží. (tedy ani na ten vzdálený stroj ani lokálně)
11.1.2012 14:35 Ash | skóre: 53
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Odpovědět | | Sbalit | Link | Blokovat | Admin
tak se mi na konec řádků přidají nechtěné mezery.

Tohle se mi v kde konsoli (3.5) a vimu neděje, asi bude problém v té vaší konsoli?
11.1.2012 19:38 xsouku04 | skóre: 7
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Já mám konzoli Konsole Version 2.7.3 Using KDE Development Platform 4.7.3 (4.7.3)

pokud spustím xterm tak to na lokálním počítači také nedělá. Pokud se ale přihlásím na server tak to také nedělá. Jakmile ale vlezu do screen nebo do tmuxu tak to už dělá.

Většinou pracuji uvnitř tmux nebo screen, nebo i též oboje, takže xterm pro mě řešení není.

Ale kdyby terminál chtěl, tak je v jeho moci ty mezerové konce řádků eliminovat. On si ale nějak myslí, že jsou asi součástí toho textu.
11.1.2012 20:29 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Odpovědět | | Sbalit | Link | Blokovat | Admin

Mám app-misc/screen-4.0.3-r4, x11-terms/xterm-276 a sys-libs/ncurses-5.9:

$ xterm
$ ssh localhost
$ screen
$ printf '1 \n2\n'

označím oba celé řádky, spustím lokálně druhý xterm a podívam se, co se mi do něj vloží:

$ xclip -out | hexdump -C
00000000  31 20 0a 32 0a                                    |1 .2.|
00000005

Jak je vidět, tak pokud v prvním terminálu se vypsala mezera před koncem řádku, tak zrovna tak se vložila do lokálního teminálu (řádek s 1). A pokud tam původně mezera nebyla, tak se ani nevložila (řádek s 2).

Úplně stejně se mi to chová, ať to dělám lokálně nebo přes SSH nebo přes bez screen.

12.1.2012 12:03 xsouku04 | skóre: 7
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Díky za pokus. Také jsem se setkal s tím, že to někdy funguje. Většinou uvnitř screen nebo tmux ale nikoli a nevím na čem to přesně záleží. Vypadá to, že existuje tedy způsob jak terminál může rozlišit opravdovou mezeru místa kde prostě nic není.

No v každým případě děkuji za ukázku aplikace xclip, o které jsem nevěděl. Při nejhorším si můžu udělat skript, který budu aktivovat pomocí nějaké horké klávesy. Ten pak vezme co je clipboardu, umaže tomu mezery na koncích řádků a zase to do clipboardu vloží. V případě kopírování nějakých odstavečků kódů např. do emailu nebo wiki, to plně řeší můj problém a není třeba kvůli tomu pouštět gvim. Ǎž si to odzkouším, tak to sem ještě pastnu.
12.1.2012 12:40 xsouku04 | skóre: 7
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Tak jsem si přidal do konfigurace awesome následující řádek

awful.key({ } , "F12", function () awful.util.spawn_with_shell("xclip -o | sed -e 's/[ ]*$//'|xclip -i") end),

Namapoval jsem si na klávesu f12 následující skript.

xclip -o | sed -e 's/[ ]*$//'|xclip -i

Ten ty hnusné mezery oddělá a pak už mohu pastnout a mezery tam nejsou.

Je to sice workaround ale docela pohodlný, jen jediné zmáčknutí klávesy navíc.
Marián Kyral avatar 12.1.2012 12:41 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to známý bug: 188528. Řešení není bohužel jednoduché.
12.1.2012 13:35 xsouku04 | skóre: 7
Rozbalit Rozbalit vše Re: copy past z konzole přidá dlouhé konce řádků s mezerami
Díky,myslím že něco podobného bude i ve screenu, ale co se projeví jen za určitých okolností. No v každým případě já jsem ze svým workaroundem spokojen.Je to pohodlnější než přenastavovat kofniguraci popřípadě patchovat screen na třiceti serverech. (+ konsoli na mým počítači) a pak už jen doufat, že se to znovu neobjeví.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.