2011-12-04 7 views
6

Recientemente comencé a usar un sistema Mac OS X Lion e intenté usar Vim en la terminal. Anteriormente tenía un archivo .vimrc en mi sistema Ubuntu y tenía F2 y F5 claves mapeadas para pegarlas y ejecutar el intérprete de Python. Aquí están las dos líneas que tengo para él:vim on mac os X key mapping de funciones no funciona

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

Está funcionando bien en Ubuntu, pero ya no funciona en Mac. (Las dos líneas anteriores están en .vimrc en mi directorio de inicio.) He desactivado las funciones específicas de Mac en mi preferencia, por lo que las teclas de función no se han usado para cosas como volumen. En este momento presionando F5 parece capitalizar todas las cartas hasta la siguiente palabra y F2 parece eliminar siguiente línea e insertar O .....

¿Hay algo más que necesito hacer para tener que funcione como se esperaba ?

Además, he estado usando solarizado como mi esquema de color e intenté tener el mismo esquema de color ahora en Mac. Parece que el comando de esquema se está leyendo desde .vimrc, pero los colores siguen siendo los colores predeterminados. Aunque los archivos .vim/colors son exactamente los mismos que antes. ¿Es este un error relacionado que necesito corregir? ¿Quizás otro archivo de configuración se lea después del mío? (Busqué _vimrc y .gvimrc, ninguno existe.)

¡Gracias!

+1

Puede o no puede resolver su problema, pero es posible que desee intentar usar [MacVim] (https://code.google.com/p/macvim/) en lugar de Vim en la Terminal. – icktoofay

+0

@icktoofay hmm, creo que tenía una expectativa demasiado alta del "núcleo UNIX" bajo OSX, muchas cosas tienen que ser específicas de Mac. Le daré una vuelta a MacVim entonces. – jet

+0

No es una diferencia con el "núcleo UNIX", sino con Terminal. Si usa 'xterm' entonces debería funcionar como lo hizo en Linux, pero' xterm' no es OS X-native; tiene que ejecutarse bajo la aplicación auxiliar X11. – icktoofay

Respuesta

1

En cuanto a su pregunta sobre el esquema de colores/solarizado, asegúrese de configurar el terminal (o iTerm2, que prefiero) con los perfiles solarizados disponibles en la distribución completa solarizada que puede descargar aquí: http://ethanschoonover.com/solarized/files/solarized.zip.

Entonces, el único otro problema que puede encontrarse es asegurarse de configurar $ TERM xterm-256color o screen-256color si usa screen o tmux.

Puede ver mi dotfiles para una configuración de trabajo, pero no olvide configurar sus perfiles de color de Terminal/iTerm como primer paso.

3

finalmente llegó a mis correlaciones de funciones trabajando recurriendo a la adición de asignaciones de la siguiente manera:

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 

Las respuestas a estas preguntas fueron útiles, si es necesario verificar que estas secuencias de escape coincide con su terminal de o configurar su propia:

mapping function keys in vim
Binding special keys as vim shortcuts

probablemente depende emuladores de terminal que se comportan consistentemente (carcajada), pero Carey @ Marcos' La sugerencia de S no fue suficiente para mí (ojalá fuera tan simple). Con iTerm2 en OS X, ya lo había configurado para xterm-256color y tmux para screen-256color, y las asignaciones de funciones aún no funcionarían. Entonces, el has('mac') podría ser innecesario si estas secuencias de iTerm2 son compatibles con xterm, aún no lo he comprobado, así que lo dejé en mi propia configuración por ahora.

Es posible que desee algunas versiones de imap también.Tenga en cuenta que no debe utilizar las variantes noremap ya que do quiere que estas asignaciones se apliquen en cascada (para desencadenar lo que haya mapeado <Fx>).

0

He utilizado el siguiente en mi vimrc para copiar y pegar

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 

lo tengo de aquí https://stackoverflow.com/a/7053522