Próbowałem zmapować jako dodanie poniższej linii do .vimrc, ale to nie działa. Sprawdziłem, czy .vimrc jest ładowany przez Vima.
map <Alt-D> <C-D>
czy jest jakiś błąd w tym mapowaniu?
Próbowałem zmapować jako dodanie poniższej linii do .vimrc, ale to nie działa. Sprawdziłem, czy .vimrc jest ładowany przez Vima.
map <Alt-D> <C-D>
czy jest jakiś błąd w tym mapowaniu?
encoding
zmiany po uruchomieniu mapowania zostaną uruchomione, to, co uzyskasz z klawiszy Alt, może nie być zgodne z początkowo ustawionymi.
Odpowiedzi:
Dla użytkowników komputerów Mac: do mapowania ALT + hjkl użyj zamiast tego prawdziwego wygenerowanego znaku (dowiedz się, który znak używając kombinacji w trybie INSERT), na przykład z moją klawiaturą otrzymuję:
<ALT+j> ==> ª
<ALT+k> ==> º
i tak dalej. Rozwiązanie znalezione tutaj w StackOverflow.
Użyłem tego do przesuwania linii w górę iw dół za pomocą ALT + k \ j, używając tego na moim .vimrc:
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
jak wyjaśniono tutaj .
Mam nadzieję, że to przydatne, ciesz się Vimem :)
DODATEK DYLAN_LARKIN (2019): Aby to działało na Macu, należy wyłączyć opcję „ Użyj opcji jako klucza meta ” w Terminal-> Preferencje-> Klawiatura
cat
. Po prostu wpisz cat
w oknie kota żądaną kombinację klawiszy. Okazało się, że alt + nawiasy to „i” na moim Macu.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
aby zobaczyć dane wyjściowe <Ak> i <Aj> przed skonfigurowaniem mapowania. W moim przypadku <Aj> jest, ∆
a <Ak> jest˚
Use Option as Meta Key
lub w profilu iTerm ⌥ key to Esc+
będzie zachowywać się w tradycyjny sposób (jak w systemie Linux / Unix). Więc nie musisz ustawiać w Vimie mapy <^[j>
, po prostu zamapuj ją na <A+j>
lub <M+j>
i działa.
:help key-notation
opisuje, jakiego formatu należy użyć do odwzorowania różnych kluczy. W przypadku alt możesz użyć albo <A-
lub <M-
. Więc twoje mapowanie będzie
map <M-d> <C-d>
Polecam również użycie nore
wariantu :map
(np. noremap
), Chyba że wyraźnie chcesz zezwolić na ponowne oszacowanie prawej strony pod kątem mapowań.
<A-d>
. Prawdopodobnie musisz zmienić ustawienia terminala, aby wysyłał <A-d>
jako plik <Esc>d
.
Nie jestem pewien, czy jest już „możliwe”. Przeczytaj aktualizację poniżej.
Tak, możesz nawet w terminalowym vimie, ale nie ma prawdziwej odpowiedzi na wszystkie pytania. Zasadniczo musisz wykonać dwa kroki:
Upewnij się, że <M-d>
notacja istnieje i dokładnie odwzoruj dane wejściowe terminala ( ^[
jest to znak ucieczki):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Przypisz coś do nowo „utworzonej” kombinacji:
noremap <M-d> :echo "m-d works!"<cr>
Rozumiejąc, jak to działa, możesz rozszerzyć tę "sztuczkę" na inne "dziwne" kombinacje, na przykład, ja używam termitu, a vim nie rozpoznaje <S-F1>
, używając kota, którego dostałem ^[[1;2P
. Następnie w moim vimrc robię:, execute "set <S-F1>=\e[1;2P"
a potem mogę mapować to na cokolwiek.
Uwaga: nie wiem dlaczego, ale dla niektórych osób używa \<Esc>
zamiast tego \e
.
Aktualizacja (luty 2016)
W zależności od terminfo obsługiwanego przez twój terminal, być może mógłbyś ... w większości terminali mapowane jest na przykład "alt + h" ^[h
, czyli: "escape + h". Więc może nadpisać klucze. Właśnie spróbowałem (ponownie) i wydaje się, że działa, ale uważam, że jest to implementacja bardzo błędna i podatna na błędy.
Niemniej jednak, dla odważnych, oto eksperymentalna wtyczka:
execute "set...
możesz po prostu bezpośrednio użyć set <M-d>=^[d
. W ^[
rzeczywistości jest to znak zmiany znaczenia wprowadzony za pomocą C-v-Esc
. Było to konieczne w rxvt / urxvt, ale xterm nie powinien wymagać specjalnego traktowania. Więcej informacji na ten temat w wiki vim .
Mapuj klawisz Alt w Vimie na Mac OSx:
Zacznij od przejrzenia kodu klucza, który Twój terminal wysyła do vim:
$ sed -n l
^[[1;9D
W powyższym przykładzie uruchomiłem polecenie i nacisnąłem Alt + Left.
Jest ^[[1;9D
to sekwencja ucieczki wysyłana do vima, więc możemy użyć jej do naszego mapowania.
map <Esc>[1;9D
Option
klawiszem ( ⌥
) skonfigurowanym jak Esc+
w iTerm2, mogłem zmapować alt+q
wyjście z vima: nnoremap <silent> <Esc>q :qa!<cr>
Twój terminal może nie przesyłać „poprawnie” Alt-D. Możesz użyć CV, aby faktycznie otrzymać aktualną sekwencję ucieczki wysłaną do Vima i użyć jej do stworzenia swojego mapowania. To znaczy, wyedytuj swój plik .vimrc i zastąp rzeczywisty wpisując następującą sekwencję "CV Alt-D", abyś miał poprawną sekwencję ucieczki w swoim vimrc. To nie zadziała, jeśli twój terminal nie wyśle niczego do vima.
Mój terminal produkowałby ^[x
polecenia (np. Dla alt-x). To, co sprawiło, że działał w Vimie, to ten mały skrypt z vim.wikia.com :
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
Dodaj do .vimrc, aby naprawić wszystkie mapowania klawiszy alt.
Witam, po wielu latach testowania wszystkich powyższych rozwiązań na Macu, bez dobrego rozwiązania, szukałem dalej.
Oto moje rozwiązanie:
Aby stworzyć kombinację klawiszy, w tym Alt, musisz zadeklarować kombinację w preferencjach> klawiatura i użyć tej kombinacji w pliku konfiguracyjnym vima (zaznacz opcję use jako klawisz meta).
Wynik musi być nietypowym znakiem ( a
na przykład nie), aby nie nadpisywać zwykłego znaku.
W poniższym przykładzie powinieneś być w stanie całkiem vimować z ALT-Up.
ustawienie vim:
ustawienie mac: