Podczas korzystania WSL / bash for Windows Chcę móc używać y
yy
3y
i p
ten sam sposób, w jaki zawsze praca w vim, ale podłączenie do schowka systemowego podzielane przez wszystkich aplikacji, a nie do wewnętrznego schowka vim za ... Mam już ditto do zarządzania schowka historia.
Wygląda na to, że Vim ma już wbudowaną opcję synchronizacji bufora kopiowania / wklejania ze schowkiem systemowym ... Jednak problem z uruchomieniem WSL polega na tym, że faktycznie musisz użyć, /mnt/c/Windows/System32/clip.exe
aby uzyskać dostęp do schowka ... Więc nawet jeśli chciałbym aby móc korzystać z:
set clipboard^=unnamed
Wygląda na to, że nie ma jeszcze obsługi WSL.
Rozumiem, że neovim ma taką opcję, ale tak naprawdę nie chcę teraz eksperymentować z neovim ...
Na razie najbliższe obejście, które znalazłem, to:
nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR>
Ale moim zdaniem jest to naprawdę okropne rozwiązanie ... Skopiowanie składa się z dwóch etapów ...
Oczywiście mogę skopiować i wkleić za pomocą myszy / shift + ins, ale myślę, że musi istnieć sposób, aby synchronizacja działała poprawnie w Vimie.
źródło
Odpowiedzi:
Wiem, że to bardzo stare pytanie, ale ostatnio znalazłem dobre rozwiązanie. Po wielu frustracjach natknąłem się na te sposoby dostępu do schowka systemu Windows poprzez kopiowanie i wklejanie.
Kopiując, z wersją vima> = 8.0.1394, jak zauważono w innej odpowiedzi https://vi.stackexchange.com/a/15190
Wklejanie, mapowanie do fałszywych poleceń rejestru, tj. „= P lub” + p lub cokolwiek innego.
Wklejanie prawym przyciskiem myszy działa, ale jest niezadowalające, jeśli nie chcesz używać myszy
źródło
vi
dodałemnnoremap <S-Insert> :r !powershell.exe -Command "& {Get-Clipboard}"<Enter>
noremap "+y :exe 'norm a'.system('echo '.shellescape(join(v:event.regcontents, "\<CR>")).' | clip.exe')<CR>
(co nie działa ...)A co z tym?
uname
to komenda terminalu Linux, która zwraca informacje o systemie operacyjnym, tak że zwróciLinux
WSL. Natomiast z-r
flagą polecenie zwraca informacje o wersji systemu operacyjnego, dlatego powinno zawierać „Windows”.TextYankPost
to zdarzenie vim (patrz:h TextYankPost
wvim
), które wykrywa twoją aktywność szarpania tekstu.clip.exe
to polecenie wiersza polecenia systemu Windows w WSL (patrzCLIP /?
w wierszu polecenia), które kopiujetext
lub zwraca zcommand
clipbord za pomocątext | clip.exe
lubcommand | clip.exe
. Tutajclip.exe
jest wykonywany z vima przez funkcję vimsystem
.źródło
has('wsl')
zamiastsystem('uname -r') =~ "Microsoft"
.Jakiś czas temu zrobiłem PR dla obsługi WSL, aby fakeclip .
Zobacz vimawesome na temat instalacji;
help fakeclip
do użytku.źródło