2011-11-22 32 views
15

Tôi nhận thấy rằng iTerm2 cung cấp tính năng rất thuận tiện khi sử dụng "Option key as + ESC" (hoặc như meta, nhưng dường như đã lỗi thời)."M-" ràng buộc trong vim trên iTerm2/Thiết bị đầu cuối không hoạt động

Tôi đã thử cả hai và phím tùy chọn hoạt động như mong đợi ở chế độ Bash (set -o emacs) và Emacs, nhưng không phải trong Vim. Vì vậy, tôi không thể sử dụng bất kỳ ràng buộc "M-" nào. Điều tôi thấy là:

  • nếu tôi đặt tùy chọn thành "+ ESC", chỉ cần hiểu phím ESC + và không biết tôi thực sự có nghĩa là khóa meta.
  • nếu tôi đặt tùy chọn thành "meta", các phím được sửa đổi với "tùy chọn" hoạt động giống như không có công cụ sửa đổi (không biết cách kiểm tra chính thức những gì vim hiểu được từ tổ hợp phím mà tôi đang nhập).

Ánh xạ "M-" hoạt động hoàn hảo trong MacVim (7.3.53), nhưng nằm ngoài bảng điều khiển và không nằm trong phạm vi của câu hỏi này.

Tôi quan tâm đến cách làm cho các ánh xạ đó hoạt động trong Vim, dưới iTerm2 hoặc Thiết bị đầu cuối.

thông số kỹ thuật của tôi:

  • MAC OS X Lion 10.7.2
  • iTerm2 1.0.0.20111020
  • vim @ 7.3.107_0 + python26 [mặc dù MacPorts]
+2

Đôi khi người ta sử dụng thuật ngữ "Meta" với một giải thích rất hẹp có nghĩa là "một Ký tự ASCII với bộ bit cao "; tuy nhiên, thông thường hơn "Meta" có thể có nghĩa là sử dụng bit cao hoặc tiền tố với ESC. Tôi giả định từ ngữ rằng "Tùy chọn là Meta" cụ thể có nghĩa là "đặt bit cao", không tương thích với việc sử dụng mã hóa UTF-8 (hoặc 8 bit khác). Bộ giả lập thiết bị đầu cuối hiện đại thường mặc định là UTF-8 và yêu cầu sử dụng tiền tố ESC cho "Meta". Tùy chọn "tùy chọn khóa meta" của Mac OS X Terminal chỉ có nghĩa là "tiền tố có ESC". –

+1

http://stackoverflow.com/a/15399297/2355112 có giải pháp về ánh xạ "Option + char" trong Mac. – oozzal

Trả lời

8

tôi đã tải xuống iTerm2 mới nhất và cố gắng xem nội dung được gửi đến/nội dung được in bởi Vim (i<C-v><M-a>) với các cài đặt sau:

  • Lựa chọn theo Option:

    Vim in æ đó là bình thường và dự kiến ​​trên bàn phím tiếng Pháp của tôi

  • Lựa chọn như Meta:

    Vim vẫn ở đó, chờ đợi một cái gì đó xảy ra. Không có gì được in. Nếu tôi nhấn Option và a theo thứ tự, tôi chỉ nhận được a. Nhấn Option và a theo một số thứ tự ngẫu nhiên có thể in á, thật kỳ lạ và hoàn toàn bất ngờ.

  • Lựa chọn như + ESC:

    Vim in ^[a có nghĩa là "Escape nhân vật tiếp theo là nhân vật một".

Từ những thử nghiệm này, dường như Vim sẽ không bao giờ nhận được <M-> mà không có ma thuật đen giả định.

Nếu bạn gắn bó với "Lựa chọn như + ESC", có vẻ như bạn sẽ phải thay đổi tất cả các tùy chỉnh của bạn <M-something> ánh xạ để <Esc>something.Điều này có thể làm việc nhưng nó sẽ làm cho văn bản bất kỳ loại văn xuôi trong bất kỳ ngôn ngữ không phải tiếng Anh một nỗi đau.

Những gì tôi làm: tôi rời khỏi phím Option như nó là như vậy mà tôi có thể gõ ký tự như œ…«» dễ dàng và tôi sử dụng <Leader> (ánh xạ tới ,, xem :help mapleader) cho tất cả các ánh xạ tùy chỉnh của tôi.

Một số người ở đây muốn đặt trước plugin và ủng hộ phương pháp tiếp cận đơn giản hơn và có khả năng an toàn hơn.

inoremap <leader>, <C-x><C-o> "my way (copied elsewhere) 
inoremap ,, <C-x><C-o>  "another way 
+1

Chính xác. Vim không bao giờ nhận được bất kỳ loại kết hợp ' 'nào. Vấn đề là có một số plugin tôi sử dụng có 'M-' bindings, và nó bất tiện để gây rối với các plugin. Có lẽ có một miếng vá vim để lừa nó chuyển đổi một phím 'Esc + thực sự nhanh 'thành' '? – Dan

+2

Ngoài ra, tôi muốn ánh xạ thứ gì đó như '' và '' để làm những gì 'Alt + (lên | xuống)' thực hiện trong Eclipse (tức là di chuyển dòng/dòng qua dòng trên/dưới). Nếu tôi đã bản đồ 'Esc + (j | k)' thay vào đó, thì nó sẽ là một nỗi đau khi tôi thoát khỏi chế độ chèn và thực sự nhấn một trong những phím di chuyển đó ... – Dan

+0

Bạn có thể liệt kê các plugin cần ''? – romainl

4

Tôi để phím tùy chọn hoạt động như bình thường và phát hiện ra rằng Vim coi chúng là <T- ràng buộc. Vì vậy, ví dụ, tôi đã thiết lập bản đồ này trong vimrc của tôi để di chuyển đến cuối của một từ khi ở chế độ Insert:

noremap! <T-Right> <C-o><Right>; 
Các vấn đề liên quan