2011-12-04 21 views
6

Niedawno zacząłem używać systemu Mac OS X Lion i próbowałem używać Vima w terminalu. Poprzednio miałem plik .vimrc w systemie Ubuntu i miałem przypisane klucze do pastetoggle i uruchomiłem interpreter python. Oto dwie linie mam dla niego:vim na Mac OS X mapowanie klawiszy funkcyjnych nie działa

set pastetoggle=<F2> 
map <buffer> <F5> :wa<CR>:!/usr/bin/env python % <CR> 

To działa dobrze w Ubuntu, ale nie działa w Mac. (Powyższe dwie linie znajdują się w .vimrc w moim katalogu domowym.) Wyłączyłem funkcje specjalne Maca w moich preferencjach, więc klawisze funkcyjne nie są używane dla rzeczy takich jak głośność. Teraz naciskając F5 wydaje się wykorzystać wszystkie litery do następnego słowa, a F2 wydaje usunąć następny wiersz i wstawić O .....

Czy coś jeszcze muszę zrobić, aby mieć to działa zgodnie z oczekiwaniami ?

Ponadto używałem solarized jako mój schemat kolorów i starałem się mieć ten sam schemat kolorów teraz na Macu. Wygląda na to, że polecenie schematu jest odczytywane z .vimrc, ale kolory są domyślnymi kolorami. Mimo że pliki .vim/colors są takie same jak wcześniej. Czy jest to związany błąd, który muszę naprawić? Być może inny plik ustawień jest czytany po moim? (Szukałem _vimrc i .gvimrc, żaden nie istnieje.)

Dzięki!

+1

To może lub nie może rozwiązać problemu, ale można spróbować użyć [MacVim] (https://code.google.com/p/macvim/) zamiast Vima w Terminalu. – icktoofay

+0

@icktoofay hmm, Chyba miałem zbyt wysokie oczekiwania na "rdzeń UNIX" pod OSX, wiele rzeczy faktycznie musi być specyficznych dla Mac. Daję MacVimowi spin. – jet

+0

To nie jest różnica z "rdzeniem UNIX", ale raczej z Terminalem. Jeśli użyjesz 'xterm', to powinno działać tak jak w Linuksie, ale' xterm' nie jest natywny dla systemu OS X; musi działać pod aplikacją pomocnika X11. – icktoofay

Odpowiedz

1

Odnośnie twojego pytania kolorystycznego/solaryzowanego - upewnij się, że ustawiłeś Terminal (lub iTerm2, który wolę) z profilami solarnymi dostępnymi w pełnej słonecznej dystrybucji, którą możesz pobrać tutaj: http://ethanschoonover.com/solarized/files/solarized.zip.

Jedynym innym problemem, który możesz napotkać, jest ustawienie wartości $ TERM xterm-256color lub screen-256color, jeśli używasz ekranu lub tmux.

Możesz sprawdzić moją konfigurację dotfiles, ale nie zapomnij najpierw skonfigurować profili kolorów Terminal/iTerm.

3

I wreszcie moje mapowania funkcji pracy poprzez uciekanie się do dodawania mapowania tak:

if has('mac') && ($TERM == 'xterm-256color' || $TERM == 'screen-256color') 
    map <Esc>OP <F1> 
    map <Esc>OQ <F2> 
    map <Esc>OR <F3> 
    map <Esc>OS <F4> 
    map <Esc>[16~ <F5> 
    map <Esc>[17~ <F6> 
    map <Esc>[18~ <F7> 
    map <Esc>[19~ <F8> 
    map <Esc>[20~ <F9> 
    map <Esc>[21~ <F10> 
    map <Esc>[23~ <F11> 
    map <Esc>[24~ <F12> 
endif 

odpowiedzi na te pytania były pomocne, jeśli trzeba sprawdzić, czy te sekwencje pasuje terminal lub ustaw swój własny:

mapping function keys in vim
Binding special keys as vim shortcuts

To pewnie zależy od emulatory terminali zachowujących konsekwentnie (rżeć), ale @Mark Carey” sugestia nie była dla mnie wystarczająca (szkoda, że ​​nie było tak proste). Z iTerm2 na OS X, już skonfigurowałem go dla xterm-256color i tmux dla screen-256color, a mapowania funkcji nadal nie działają. Tak więc has('mac') może być niepotrzebne, jeśli te sekwencje z iTerm2 są zgodne z xterm, nie sprawdziłem jeszcze, więc zostawiłem je w mojej własnej konfiguracji na teraz.

Możesz potrzebować również wersji imap.Zauważ, że nie powinieneś używać wariantów noremap, ponieważ chcesz, aby te mapowania kaskadowały się (aby wywołać to, co zmapowałeś na <Fx>).

0

użyłem następujących w moim vimrc skopiować i wkleić

if &term =~ "xterm.*" 
    let &t_ti = &t_ti . "\e[?2004h" 
    let &t_te = "\e[?2004l" . &t_te 
    function XTermPasteBegin(ret) 
     set pastetoggle=<Esc>[201~ 
     set paste 
     return a:ret 
    endfunction 
    map <expr> <Esc>[200~ XTermPasteBegin("i") 
    imap <expr> <Esc>[200~ XTermPasteBegin("") 
    cmap <Esc>[200~ <nop> 
    cmap <Esc>[201~ <nop> 
endif 

mam go stąd https://stackoverflow.com/a/7053522