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

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


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.


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.