2011-12-04 9 views
6

Ho recentemente iniziato a utilizzare un sistema Mac OS X Lion e ho provato a utilizzare Vim nel terminale. In precedenza avevo un file .vimrc nel mio sistema Ubuntu e avevo F2 e F5 chiavi mappate a pastetoggle ed eseguivo l'interprete python. Qui ci sono le due linee che ho per essa:vim on mac os X mapping dei tasti funzione X non funzionante

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

Sta funzionando bene in Ubuntu, ma non funziona più in Mac. (Le due righe precedenti sono in .vimrc sotto la mia directory home). Ho disattivato le funzioni specifiche del Mac nelle mie preferenze, quindi i tasti funzione non sono stati usati per cose come il volume. In questo momento premendo F5 sembra di capitalizzare tutte le lettere fino al prossimo parola, e F2 sembra eliminare riga successiva e inserire O .....

c'è qualcos'altro che devo fare per averlo a lavorare come previsto ?

Inoltre, stavo usando il solarized come schema di colori e ho cercato di avere lo stesso schema di colori ora in Mac. Sembra che il comando dello schema sia stato letto da .vimrc, ma i colori sono i colori predefiniti. Anche se i file .vim/colors sono uguali a prima. È un errore correlato che devo correggere? Forse un altro file di impostazione viene letto dopo il mio? (Ho cercato _vimrc e .gvimrc, nessuno esiste.)

Grazie!

+1

Si può o non può risolvere il problema, ma si può provare a utilizzare [MacVim] (https://code.google.com/p/macvim/) anziché Vim in Terminal. – icktoofay

+0

@icktoofay hmm, credo di avere un'aspettativa troppo alta del "core UNIX" sotto OSX, molte cose devono essere specifiche per Mac. Allora darò un giro a MacVim. – jet

+0

Non è una differenza con "UNIX core", ma piuttosto con Terminal. Se usi 'xterm', allora dovrebbe funzionare come su Linux, ma' xterm' non è OS X-nativo; deve essere eseguito sotto l'applicazione helper X11. – icktoofay

risposta

1

Per quanto riguarda il vostro schema colori/domanda solarizzata - assicuratevi di configurare Terminal (o iTerm2, che preferisco) con i profili solarizzati disponibili nella distribuzione completamente solarizzata che potete scaricare qui: http://ethanschoonover.com/solarized/files/solarized.zip.

Quindi l'unico altro problema che potresti incontrare è assicurarti di impostare il tuo $ TERM xterm-256color o screen-256color se usi screen o tmux.

È possibile dare un'occhiata al mio dotfiles per una configurazione di lavoro, ma non dimenticare di configurare i profili di colore Terminal/iTerm come primo passo.

3

finalmente ho avuto le mie mappature funzione lavorativa ricorrendo ad aggiungere mappature in questo modo:

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 

Le risposte a queste domande sono stati utili, se è necessario verificare che queste sequenze di escape abbinare il vostro terminale del o impostare il proprio:

mapping function keys in vim
Binding special keys as vim shortcuts

probabilmente dipende emulatori di terminale che si comportano in modo coerente (risata), ma @ Mark Carey' Il suggerimento di me non era abbastanza per me (vorrei che fosse così semplice). Con iTerm2 su OS X, l'avevo già configurato per xterm-256color e tmux per screen-256color, e il mapping delle funzioni non funzionava ancora. Quindi lo has('mac') potrebbe non essere necessario se queste sequenze di iTerm2 sono conformi a xterm, non l'ho ancora controllato, quindi per ora la ho lasciata nella mia configurazione.

Si potrebbero desiderare anche alcune versioni di imap.Si noti che non si dovrebbero usare le varianti noremap poiché si do si desidera che questi mapping si sovrappongano (per attivare qualsiasi cosa a cui è stato mappato <Fx>).

0

ho usato il seguente nel mio vimrc copiare e incollare

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 

ho presa da qui https://stackoverflow.com/a/7053522