2011-11-10 34 views
7

Gần đây tôi đã chuyển sang sử dụng máy Mac tại nơi làm việc trước đây bằng Linux. Tôi đã tìm hiểu về MacVim (từ http://code.google.com/p/macvim/) và đã cố gắng chuyển qua các lần bấm phím trước đó của tôi.Một số ánh xạ chính không hoạt động trong MacVim

Các ánh xạ Tôi đã từng có như sau:

  • Ctrl-T: tab mới
  • Ctrl-W: Đóng tab/cửa sổ
  • Ctrl-1. .. Ctrl-0: Chuyển sang tab được đánh số
  • Alt-Up: tab mới (giống như Ctrl-T)
  • Alt-Left/Alt-Right: Chuyển sang trước/sau tab
  • Ctrl-Alt-E: Mở FuzzyFinder trong tập tin chế độ
  • Ctrl-Alt-B: mở FuzzyFinder trong chế độ đệm
  • Ctrl-Alt-W: Xóa dấu khoảng trắng từ bộ đệm

Bây giờ, để làm cho các ánh xạ này giống như 'Mac như', tôi quyết định chuyển đổi hai thứ nhất để sử dụng tùy chọn (ví dụ: Logo Apple) và tất cả những người khác sử dụng phím lệnh thay vì Alt (ví dụ: Ctrl-Alt-E trở thành Ctrl-Command-E). Tôi đọc trên http://macvim.org/OSX/index.php rằng khóa này có thể được ánh xạ với D (nghĩa là). Nội dung mới của vimrc của tôi là như sau:

nmap <D-t> :tabnew<cr> 
nmap <D-w> :close<cr> 
nmap <D-1> 1gt 
nmap <D-2> 2gt 
nmap <D-3> 3gt 
nmap <D-4> 4gt 
nmap <D-5> 5gt 
nmap <D-6> 6gt 
nmap <D-7> 7gt 
nmap <D-8> 8gt 
nmap <D-9> 9gt 
nmap <D-0> 10gt 

nmap <D-Up> :tabnew<CR> 
nmap <D-Right> :tabnext<CR> 
nmap <D-Left> :tabprevious<CR> 

"FuzzyFinder 
nmap <C-D-e> :FufFileWithFullCwd<CR> 
nmap <C-D-b> :FufBuffer<CR> 

"Whitespace remover 
nmap <C-D-w> :%s/\s\+$//<CR> 

Vì vậy, sau khi tái lập bản đồ các phím, một số giờ làm việc và những người khác không, không có logic rõ ràng là tại sao.

gì hoạt động:

  • Cmd-TCmd-W làm việc thành công cho mở và đóng các tab.
  • Cmd-1 ... Cmd-0 hoạt động thành công để chuyển đổi tab.

gì không hoạt động:

  • Cmd-Up để mở một tab không hoạt động.
  • Cmd-LeftCmd-Right cho các tab chuyển đổi không hoạt động.
  • Ctrl-Cmd-ECtrl-Cmd-B để mở FuzzyFinder không hoạt động.
  • Ctrl-Cmd-W cho thanh toán bù trừ khoảng trắng không hoạt động (nhưng không phải nó đóng tab, vì nó sẽ không ctrl.
+0

bạn có thể chấp nhận câu trả lời của riêng mình nếu bạn tự tìm ra giải pháp. ;) – sjas

+0

Có [lý do] (http://learnvimscriptthehardway.stevelosh.com/chapters/05.html) để luôn sử dụng '* nore (map | abbrev)' (ví dụ: 'nnoremap') và không bao giờ' nmap'. – ZyX

+0

Cảm ơn ZyX vì lời khuyên. Tôi nghĩ rằng tôi sẽ đọc toàn bộ 'Tìm hiểu Vim Script the Way cứng' khi tôi có cơ hội! –

Trả lời

5

Vì vậy, nó chỉ ra rằng có một bu g trong Macvim (http://code.google.com/p/macvim/issues/detail?id=317) có nghĩa là không thể ánh xạ khóa ctrl. Thay vào đó, tôi đã ánh xạ khóa chính (a.k.a. dấu gạch chéo ngược) và tất cả dường như hoạt động ngay bây giờ.

+0

Xin chào @Joel Cross, bạn có thể cho tôi biết cách bạn giải quyết vấn đề cụ thể hơn không? Tôi cố gắng ánh xạ một khóa đến ctrl + command + w. cảm ơn – bean

+0

Hi Joel, bạn có thể cho tôi biết thêm chi tiết về cách ánh xạ ctrl + lệnh + w không? – bean

+0

Xin lỗi tôi có nghĩa là ánh xạ một khóa như F đến ctrl + command + w, chứ không phải ngược lại – bean

7

tra nguyên nhân gây ra bằng cách làm

:verbose map <D-Up> 

Ngoài ra, hãy thử chọn lọc các plugin khác của bạn một cách có chọn lọc để xem các ánh xạ có bị xóa không bằng cách nào đó

+0

* Tập cuối cùng từ /Ứng dụng /MacPorts/MacVim.app/Contents/Resources/vim/gvimrc –

+0

Vì vậy, có vẻ như tệp toàn cầu sẽ ghi đè cấu hình của tôi. Tôi ngạc nhiên, bởi vì tôi đã nghĩ rằng cấu hình người dùng của tôi sẽ được ưu tiên. –

+0

Tôi đã thêm dòng "let macvim_skip_cmd_opt_movement = 1" vào .vimrc của tôi và bây giờ các tab đang hoạt động tốt. Ba lệnh cuối cùng (các lệnh sử dụng tổ hợp Ctrl-cmd) vẫn không hoạt động. –