Wklejanie tekstu do edytorów terminali zawsze wkleja się w jednym wierszu w Ubuntu dla Windows (10)

5

Próbuję wkleić ze schowka systemu Windows do edytora tekstów terminala, takiego jak vim (lub jego schowek i xterm-schowek, pozwalający na warianty takie jak vim-gtx), nano lub emacs bezskutecznie.

Próbuję go głównie z vim-gtx, ponieważ vim jest moim ulubionym edytorem -> ale bez względu na to, jaką metodę wypróbuję, czy jest to:

  • Przy użyciu: ustaw wklej i wklej za pomocą Ctrl-v, Shift-ctrl-v (jest to jedyna metoda, która wkleja zawartość schowka)
  • Wklejanie za pomocą „* p lub” + p (nie wkleja)
  • Kopiowanie danych wejściowych do clip.exe (próbowałem xclip, ale to narzędzie nie działa na WSL), a następnie wklejanie do vima.

Jak wspomniano powyżej, wklejanie ze schowka wydaje się działać tylko po naciśnięciu Ctrl-v w trybie wstawiania (Shift-Ctrl-v wstawia „^”, a „* p i” + p wstawia znak „i” lub „^? '), a wklejone wyjście zawsze wkleja się w jednym wierszu.

Na przykład sekcja domyślnego pliku .bashrc skopiowana z VSCode:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Wklei się w edytorze tekstu terminala w następujący sposób:

# enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then   if [ -f /usr/share/bash-completion/bash_completion ]; then     . /usr/share/bash-completion/bash_completion   elif [ -f /etc/bash_completion ]; then     . /etc/bash_completion   fi fi

Jeśli widoczne są znaki EOL, znak $ pojawia się tuż po ostatnim znaku. Ten problem występuje bez względu na to, który edytor jest używany, skąd kopiowany jest tekst i bez względu na to, który system wklejania jest używany (jeśli wklejanie w ogóle się powiedzie).

Podsumowując:

  • Ctrl-v w vimie jest jedynym sposobem na wklejenie czegokolwiek, ale wklejanie następuje tylko w jednym wierszu

  • „* p /” + p w vimie nie wkleja się zgodnie z oczekiwaniami (ale działa w vimie przez git-for-windows, patrz uwaga poniżej)

  • Nie jestem pewien, jak wkleić ze schowka systemowego do nano i emacsa (zwykłe wklejanie i przesyłanie danych wyjściowych do klipu systemu Windows, a następnie wklejanie niczego nie wkleja w tych dwóch programach - mogę wkleić tylko po wewnętrznym zaciągnięciu / skopiowaniu).
  • Może to stanowić problem (ze wszystkimi) odmianami vima w systemie Ubuntu dla systemu Windows.

Dzięki

Ważna uwaga: -Podczas wklejania z „* p na vimie przez git-for-windows (zamiast bash Ubuntu), wkleja się poprawnie (z nowymi liniami). Ale Vim (wersja vim-gtx lub ppa) przez Ubuntu nie jest w stanie wklej poprawnie za pomocą „* p - może to być problem z przeniesieniem vima

Samuel G.
źródło
3
Może mieć to coś wspólnego z tym, jak podziały wiersza systemu Windows różnią się od podziałów wiersza UNIX. Możesz spróbować pobrać Sublime Text Editor, wkleić tam tekst, a następnie przejść do Widok -> Zakończenia linii -> UNIX i wkleić tekst z Sublime do vima.
TheWanderer
Dzięki za wkład! Próbowałem tego i to nie robi różnicy. Dokonałem edycji mojego wpisu. Zdałem sobie sprawę, że wklejanie działa z „* p przez vim na git-for-windows, ale nie na Ubuntu dla Windows. Być może wygląda to na problem z (wszystkimi?) Odmianami vim na Ubuntu dla Windows? Czy wiesz, że sposób wklejania ze schowka systemowego na nano / emacs? (Myślałem, że robiłem to wcześniej, ale może robię to źle) - jeśli mogę wykluczyć jeden z tych edytorów i jego opcje wklejania, to można wykluczyć vima jako problem!
Samuel G
Kliknięcie prawym przyciskiem to sposób wklejania do okna CMD. Właśnie wypróbowałem to teraz w nano i zadziałało dla adresu URL. Działa również, gdy skopiowałem twój przykładowy tekst i wkleiłem go. Zachowano przerwy w linii.
TheWanderer
Właśnie wypróbowałem to w nano - i działa. Dziękuję Ci. Problemem wydaje się więc vim
Samuel G
Chyba tak. Jeśli nano działa na ciebie, to zdecydowanie dobrze.
TheWanderer

Odpowiedzi:

1

Jeśli próbujesz wkleić wiele linii ze schowka do Vima, w tym poście znalazłem działające rozwiązanie.

https://stackoverflow.com/posts/49933556/edit

Uważam, że to pytanie zasługuje na bardziej obiektywną odpowiedź.

Wejście w tryb wklejania

  • ESC
  • : ustaw wklej
  • naciśnij i
  • SHIFT+ Insert(z tekstem skopiowanym do schowka)


Opuszczanie trybu wklejania

  • ESC
  • : ustaw nopaste
  • naciśnij i

Wkleiłeś tekst i możesz pisać ponownie.

Anis Smail
źródło
0

Wypróbuj ten łańcuch: Control+, Ra następnie Shift+=

Xliiv
źródło
0

To pytanie zostało napisane w czerwcu 2017 r. I wiele osób poprosiło o obsługę kopiowania i wklejania WSL. W odpowiedzi firma Microsoft wydała aktualizację w kwietniu 2018 r .: Nadchodzi kopiowanie i wklejanie dla konsol Linux / WSL :

Począwszy od kompilacji Windows 10 Insider # 17643, możesz kopiować / wklejać tekst z / do konsoli Linux / WSL !!!

Wiemy, że jest to cecha, na którą WIELU z was czekało - nasze najszczersze podziękowania za cierpliwość i ciągłe wsparcie, podczas gdy rozplątaliśmy elementy wewnętrzne konsoli, umożliwiając nam wdrożenie tej funkcji.

Aby upewnić się, że nie łamiemy żadnych istniejących zachowań, musisz włączyć opcję „Użyj Ctrl + Shift + C / V jako Kopiuj / Wklej” na stronie właściwości „Opcje” konsoli.

Uwaga: Aby korzystać z nowej funkcji, będziesz potrzebować aktualizacji systemu Windows z września 2018 r.

WinEunuuchs2Unix
źródło
0

Zdefiniuj zmienną Bash $ EDITOR na dowolny wybór, tj

      export $EDITOR=/usr/bin/nano 

Następnie użyj Ctrl-x Ctrl-etego uruchomienia nano. Następnie możesz wkleić zaznaczenie wieloliniowe po zapisaniu, powróć do powłoki z poleceniem wypełnionym z edycji. # aktualizacja zaraz po chwili, chcę dodać, że sztuczka z nano opiera się na nowych możliwościach WSL uzyskanych, jak wspomniano w jednej aktualizacji 2018.

Jurij
źródło
0

Miałem ten problem podczas używania cmder / ConEmu jako emulatora terminala.

Istnieje ustawienie ConEmu do wklejania, które domyślnie jest wklejane do pojedynczej linii za pomocą Ctrl + V i wielu linii za pomocą Shift + Insert.

Zmiana ustawienia trybu wklejania nr 2 z Single linena Multi linesjak na poniższym zrzucie ekranu naprawiła to dla mnie.

Ustawienia wklejania ConEmu

roganartu
źródło