Czy mogę w ogóle używać klawisza `<cmd> w terminalu Vim?

Odpowiedzi:

12

<D-> działa tylko w MacVim.

Szybkie google zwróci mnóstwo hacków i rozwiązań innych firm. Wszystkie znane mi rozwiązania działają zarówno w systemie, jak i są specyficzne dla aplikacji: jeśli zmienisz mapowanie Cmdtylko w iTerm2, jak otworzysz nowe okno lub nową kartę? Z… z… MYSZĄ?

Nie mogę sobie wyobrazić dobrego powodu do ponownego Cmdprzypisania klucza do czegokolwiek na komputerze Mac. To byłoby szalone.

Vim nie jest TextMate ani żadnym innym edytorem, którego używałeś wcześniej. Nie ma sposobu, aby bezproblemowo przenieść wszystkie stare nawyki.

Zamiast marnować czas na próbę przekształcenia Vima i twojego terminalu w coś, co nie jest i nie może być, powinieneś nauczyć się mądrze używać i dostosowywać Vima. Wszystkie twoje kombinacje Cmd+ Shift+ Ctrl+ Altnigdzie cię nie zaprowadzą. Zwłaszcza w terminalu, gdzie Altczęsto jest problematyczne i Cmdbezużyteczne.

Rozważ użycie <leader>( :help leader):

  • jest przenośny na każdej platformie
  • jest mniej podatny na konflikty z systemem operacyjnym lub emulatorem terminali
  • otwiera wiele łatwych do zapamiętania możliwości
romainl
źródło
Haha, dziękuję grawitacji, teraz jest o wiele czystsze.
romainl
Dziękuję za odpowiedź. Słyszałem o tym, <leader>ale nie byłem pewien, jak go wykorzystać. Zgadzam się z twoją opinią na temat przenośności, jest to jeden z powodów, dla których przeprowadzam się do Vima. Dzięki.
jordelver
Można przemapować Cmdsię Controlw iTerm2, a następnie w tym samym oknie, dodać skróty, aby otworzyć nową kartę z ^titp, wszystko działa!
Sean Clark Hess,
5

Odkryłem, że iterm2 ma opcję w ustawieniach klawiatury, aby zrobić coś takiego. Na przykład poniżej zamapowałem polecenie-enter na: wq

wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj

Neil McGill
źródło
Dziękuję za to rozwiązanie. Właśnie tego szukałem. Wiem o <Leader>, ale myślę, że niektóre rzeczy, takie jak zapis pliku, powinny być uniwersalne.
Dmitrij Biletskyy
4

W przypadku prostych poleceń istnieje rozwiązanie poprzez wysłanie odpowiedniego kodu szesnastkowego do terminala. Na przykład chciałem zapisać w vimie, naciskając cmd-s. I odwzorowany cmd-sw iterm2 wysłać kod szesnastkowy 0x13, który jest kodem ctrl-s, a następnie I mapowane ctrl-sdo :wqw vim.

jhickner
źródło
Jak dokładnie to robisz? Dzięki.
nunos
Nie działał dla mnie kod szesnastkowy 0x13: / imgur.com/RjxOoLY
michalzuber
Aby dowiedzieć się, jak to zrobić, zobacz zdjęcia poniżej - dzięki @jhickner za pomysł spojrzenia na iTerm2
Neil McGill
3

Rozwiązaniem 2016 jest użycie programu open source Karabiner , który umożliwia na przykład mapowanie modyfikatora i innych kluczy z bardzo drobną ziarnistością , na przykład

  • Przypisz tylko lewy klawisz ⌘ Cmdlub Optionklawisz.
  • Przypisz klucz tylko dla określonych aplikacji, np. Tylko w Terminalu, Emacsie lub maszynie wirtualnej.

Na przykład, oto jak zmienić przypisanie lewego ⌘ Cmdklawisza, aby działał jak Ctrl tylko wewnątrz terminala (i pozostaw prawy nietknięty, abyś mógł nadal używać np. ⌘ Cmd + TabDo przełączania między aplikacjami):

karabiner-zrzut ekranu

dorserg
źródło
Niesamowite. Teraz mogę poprawnie używać tego w Vimie, chociaż (lewe) polecenie + tab nie „Alt Tab”. Mogę użyć właściwej komendy, ale czy mimo to istnieje możliwość jej zachowania?
meder omuraliev