2013-05-17 13 views
11

Kopiuję tekst spoza Vim. ⌘V w innych aplikacjach wkleja tekst bez problemu. W MacVimie to nie działa.Nie można wkleić do MacVim

W trybie wstawiania nic się nie wyświetla. W trybie normalnym otrzymuję E353: Nothing in register +. Dzieje się tak, gdy set clipboard=unnamed jest włączone lub wyłączone.

Dziwnie, to działało wcześniej. Co jest nie tak?

+1

zwykle zaczynasz * MacVim * poprzez GUI (np doku, * Finder *, Spotlight, aplikacja uruchamiająca) lub za pomocą wiersza poleceń? Jeśli zwykle używasz wiersza poleceń (np. 'Mvim'), czy odzyskujesz dostęp do schowka, jeśli zamkniesz (nie tylko zamkniesz wszystkie okna, ale np. Command-Q), a następnie uruchomisz ponownie" przez GUI "? Czy jest coś wyjątkowego w środowisku, z którego uruchamiasz * MacVim *? Na przykład. 'mvim' z wnętrza * tmux * okienka, które nie używają czegoś w rodzaju mojego programu' 'reattach-to-user-names '' (https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard). –

+0

@ChrisJohnsen To prawdopodobnie problem. Wkrótce się obejrzę. Dzięki! –

+0

@ChrisJohnsen Dzięki! 'reattach-to-user-namespace' jest doskonałe. Uratowałeś wielu frajerów takich jak ja. –

Odpowiedz

28

Jeśli używasz tmux a czasem początkowo uruchomić MacVim poprzez program mvim wiersza polecenia, a następnie może być napotykają problem, że skłoniło mnie do napisania reattach-to-user-namespace command.

Domyślam się, że schowek dostęp pracował na poprzednich okazjach, ponieważ stało się rozpoczęły MacVim poprzez „normalny” sposób GUI (np doku, Finder, Reflektor, itd.). W późniejszym czasie schowek stał się niedostępny po opuszczeniu poprzedniego wystąpienia z MacVim i ponownie uruchomiony przez (np.) mvim z wnętrza sesji tmux.

Podstawowym problemem jest to, że programy uruchamiane w niektórych kontekstach (tj. W ramach sesji tmux) kończą się środowiskiem, które uniemożliwia im dostęp do niektórych usług (na przykład do pulpitów OS X).

Początkowe uruchomienie jest tutaj ważne. Nowe okna rozpoczęty przez mvim -in- tmux (nawet bez powyższego programu otoki-linked), powinny mieć dostęp do schowka dopóki MacVim wcześniej rozpoczął „za pośrednictwem graficznego interfejsu użytkownika” (być może nadal istnieją pewne MacVim otwarte okna, a może masz skonfigurowane MacVim, aby działał nawet wtedy, gdy nie ma otwartych okien). Odpowiednio, aby odzyskać dostęp do schowka, musisz zamknąć wszystkie istniejące okna MacVim MacVim, zamknąć aplikację, a następnie zrestartować ją w sposób, który ma dostęp do schowka (np. Za pośrednictwem GUI lub "wewnątrz" opakowania) .

Po zainstalowaniu program powyżej powiązane wrapper (jest również dostępna za pośrednictwem MacPorts i Homebrew), można użyć polecenia jak reattach-to-user-namespace mvim aby jeśli kończy się rozpoczęciem nowego MacVim instancji, a następnie ta nowa instancja będzie miała dostęp do schowka. Możesz użyć aliasu, funkcji powłoki lub skryptu, aby upewnić się, że zawsze "zawijasz" mvim.

Kilka innych poleceń również skorzystać z „owijania” (pbpaste, pbcopy, nohup, launchctl (w zależności od komendy używasz)), więc może chcesz „wrap” swoją całą skorupę zamiast poszczególnych poleceń. Bit środowiska procesowego, które modyfikuje "opakowanie", jest dziedziczone przez procesy potomne, więc "zawijanie" powłoki będzie miało wpływ na większość poleceń, które z niej uruchomisz.Jeśli używasz tmux, można skonfigurować default-command automatycznie „wrap” domyślny tmux muszle:

set-option -g default-command "reattach-to-user-namespace -l zsh" 
+0

Jak zabrałbym się za owinięcie całej skorupy? –

+1

Jeśli masz już uruchomioną powłokę, możesz ręcznie uruchomić nową, "zapakowaną" powłokę w ten sposób: 'exec reattach-to-user-namespace zsh' (możesz to zrobić bez' exec' (np. Do debugowania) , ale skończysz z dodatkową warstwą powłoki). Aby zrobić to automatycznie, będziesz musiał ponownie skonfigurować wszystko, co zaczyna twoją powłokę (np. * Tmux *), aby zamiast tego użyć opakowania (np. Przez 'default-command'); tzn. po prostu dodaj przedrostek 'reattach-to-user-namespace'. –

Powiązane problemy