2011-12-04 103 views
6

我最近開始使用Mac OS X Lion系統,並試圖在終端中使用Vim。我以前在我的Ubuntu系統中有一個.vimrc文件,並且有F2F5鍵映射到pastetoggle並運行python解釋器。這裏是我的兩條線:vim在mac os上X功能鍵映射不起作用

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

它在Ubuntu中工作得很好,但不再適用於Mac。 (以上兩行代碼位於我的主目錄下的.vimrc中。)我已經關閉了Mac中的特定功能,因此功能鍵並未用於音量等功能。現在按F5 似乎大寫所有字母,直到下一個單詞,並F2似乎刪除下一行,地插入O .....

有沒有別的東西,我需要做的,把它按預期工作?

此外,我一直使用solarized作爲我的配色方案,並試圖在Mac中使用相同的配色方案。看起來,scheme命令是從.vimrc讀取的,但顏色仍然是默認顏色。即使.vim/colors文件與以前一樣。這是一個我需要修復的相關錯誤嗎?也許另一個設置文件正在閱讀我自己的? (我找了_vimrc和.gvimrc,都不存在。)

謝謝!

+1

它可能會或可能不會解決你的問題得到它,但你可能要使用嘗試[的MacVim] (https://code.google.com/p/macvim/)而不是終端中的Vim。 – icktoofay

+0

@icktoofay嗯,我想我對OSX下「UNIX核心」的期望太高了,很多事情實際上必須是Mac特定的。然後我會給MacVim一個旋轉。 – jet

+0

這與「UNIX核心」沒有什麼區別,而是與終端。如果你使用'xterm',那麼它應該像在Linux上一樣工作,但'xterm'不是OS X本機;它必須在X11助手應用程序下運行。 – icktoofay

回答

1

關於您的顏色方案/日光問題 - 請確保您設置了終端(或iTerm2,我更喜歡)與完整的日光分佈中提供的日光配置文件,您可以在這裏下載:http://ethanschoonover.com/solarized/files/solarized.zip

然後,您可能會碰到的唯一的其他問題是確保您設置$ TERM xterm-256colorscreen-256color如果您使用屏幕或tmux。

您可以看看我的dotfiles作爲工作設置,但不要忘記設置您的終端/ iTerm顏色配置文件作爲第一步。

3

我終於得到了我的函數映射工作訴諸加入這樣的映射:

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 

這些問題的答案是有幫助的,如果您需要驗證這些轉義序列匹配你的終端的或設置自己:

mapping function keys in vim
Binding special keys as vim shortcuts

這可能取決於終端仿真器一貫表現(大笑),但@馬克·凱莉」我的建議對我來說還不夠(我希望這很簡單)。對於OS X上的iTerm2,我已經將其配置爲xterm-256colorscreen-256color的tmux,並且函數映射仍然不起作用。因此,如果iTerm2中的這些序列符合xterm標準,那麼has('mac')可能是不必要的,我還沒有檢查過,所以現在就把它留在我自己的配置中。

您可能還需要一些imap版本。請注意,您不應使用noremap變體,因爲您要想要這些映射級聯(以觸發您已映射<Fx>的任何內容)。

0

我用下面的在我的vimrc複製和粘貼

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 

我從這裏https://stackoverflow.com/a/7053522