Tôi đã cố gắng ánh xạ để thêm dòng bên dưới vào .vimrc, nhưng nó không hoạt động. Tôi đã kiểm tra .vimrc được tải bởi Vim.
map <Alt-D> <C-D>
có lỗi nào trong ánh xạ này không?
Tôi đã cố gắng ánh xạ để thêm dòng bên dưới vào .vimrc, nhưng nó không hoạt động. Tôi đã kiểm tra .vimrc được tải bởi Vim.
map <Alt-D> <C-D>
có lỗi nào trong ánh xạ này không?
encoding
thay đổi của bạn sau khi ánh xạ chạy, những gì bạn nhận được từ các phím Alt có thể không khớp với những gì bạn đã đặt ban đầu.
Câu trả lời:
Đối với người dùng Mac ngoài kia: để ánh xạ ALT + hjkl, thay vào đó hãy sử dụng ký tự thực được tạo (tìm ký tự nào bằng cách sử dụng tổ hợp khi ở chế độ CHÈN), ví dụ với bàn phím của tôi, tôi nhận được:
<ALT+j> ==> ª
<ALT+k> ==> º
và như thế. Giải pháp được tìm thấy ở đây trên StackOverflow.
Tôi đã sử dụng điều này để di chuyển các dòng lên và xuống với ALT + k \ j, sử dụng điều này trên .vimrc của tôi:
nnoremap ª :m .+1<CR>==
nnoremap º :m .-2<CR>==
inoremap ª <Esc>:m .+1<CR>==gi
inoremap º <Esc>:m .-2<CR>==gi
vnoremap ª :m '>+1<CR>gv=gv
vnoremap º :m '<-2<CR>gv=gv
như đã giải thích ở đây .
Hy vọng nó hữu ích, hãy tận hưởng Vim :)
ADDENDUM BY Dylan_Larkin (2019): Để tính năng này hoạt động trên máy Mac, bạn phải TẮT " Use Option as Meta Key " trong Terminal-> Preferences-> Keyboard
cat
. Đơn giản chỉ cần gõ cat
và bên trong cửa sổ mèo tổ hợp phím bạn muốn. Phát hiện ra rằng dấu ngoặc kép alt là 'và' trên máy mac của tôi.
nmap ˙ <C-w><Left> nmap ¬ <C-w><Right> nmap ˚ <C-w><Up> nmap ∆ <C-w><Down>
sed -n l
để xem đầu ra của <Ak> và <Aj> trước khi bạn định cấu hình ánh xạ. Trong trường hợp của tôi <Aj> là ∆
và <Ak> là˚
Use Option as Meta Key
hoặc trên hồ sơ iTerm ⌥ key to Esc+
sẽ hoạt động theo cách truyền thống (như trên Linux / Unix). Vì vậy, bạn không cần phải đặt bản đồ trên Vim <^[j>
, chỉ cần ánh xạ nó đến <A+j>
hoặc <M+j>
và nó hoạt động.
:help key-notation
mô tả định dạng cần được sử dụng để ánh xạ các khóa khác nhau. Trong trường hợp alt, bạn có thể sử dụng <A-
hoặc <M-
. Vì vậy, ánh xạ của bạn sẽ là
map <M-d> <C-d>
Tôi cũng khuyên bạn nên sử dụng nore
biến thể của :map
(ví dụ noremap
:) trừ khi bạn muốn cho phép đánh giá lại phía bên phải một cách rõ ràng cho các ánh xạ.
<A-d>
. Bạn có thể cần thay đổi cài đặt của thiết bị đầu cuối để nó gửi <A-d>
như vậy <Esc>d
.
Tôi không chắc là "có thể" nữa. Vui lòng đọc bản cập nhật bên dưới.
Có, bạn thậm chí có thể trong thiết bị đầu cuối vim, nhưng không có câu trả lời thực sự bắt tất cả . Về cơ bản bạn phải làm theo hai bước:
Đảm bảo rằng <M-d>
ký hiệu tồn tại và ánh xạ chính xác những gì đầu vào đầu cuối của bạn ( ^[
là ký tự thoát):
$ cat
^[d
$
" in your .vimrc
execute "set <M-d>=\ed"
" you have to use double quotes!
Ánh xạ một cái gì đó với kết hợp "được tạo" mới của bạn:
noremap <M-d> :echo "m-d works!"<cr>
Hiểu được cách hoạt động của nó, bạn có thể mở rộng "thủ thuật" này sang các cách kết hợp "lạ" khác, ví dụ: tôi đang sử dụng mối, và vim không nhận ra <S-F1>
, tôi sử dụng mèo ^[[1;2P
. Sau đó, trong vimrc của tôi, tôi thực hiện:, execute "set <S-F1>=\e[1;2P"
và sau đó tôi có thể ánh xạ nó với bất kỳ thứ gì.
Lưu ý: Tôi không biết tại sao, nhưng đối với một số người sử dụng \<Esc>
các tác phẩm thay vì \e
.
Cập nhật (tháng 2 năm 2016)
Tùy thuộc vào điểm cuối mà thiết bị đầu cuối của bạn chạy, có thể bạn có thể ... trong hầu hết các thiết bị đầu cuối, ví dụ: "alt + h" được ánh xạ tới ^[h
, đó là: "Escape + h". Vì vậy, nó có thể ghi đè các khóa. Tôi vừa thử (một lần nữa) và nó có vẻ hoạt động, nhưng tôi tin rằng đó là một triển khai rất lỗi và dễ xảy ra lỗi.
Tuy nhiên, đối với những người đủ can đảm, đây là một plugin thử nghiệm:
execute "set...
thứ này, bạn có thể trực tiếp sử dụng set <M-d>=^[d
. Thực ^[
sự là một ký tự thoát được nhập với C-v-Esc
. Điều này là cần thiết trong rxvt / urxvt, nhưng xterm không cần điều trị đặc biệt. Thông tin thêm về chủ đề này trong vim wiki .
Lập bản đồ phím Alt trong Vim trên Mac OSx:
Bắt đầu bằng cách xem mã khóa mà thiết bị đầu cuối của bạn đang gửi tới vim:
$ sed -n l
^[[1;9D
Trong ví dụ trên, tôi đã chạy lệnh và nhấn Alt + Left.
Đây ^[[1;9D
là trình tự thoát đang được gửi tới vim, vì vậy chúng tôi có thể sử dụng trình tự đó để lập bản đồ.
map <Esc>[1;9D
Option
chủ chốt ( ⌥
) cấu hình như Esc+
trong iTerm2, tôi có thể lập bản đồ alt+q
bỏ vim: nnoremap <silent> <Esc>q :qa!<cr>
Thiết bị đầu cuối của bạn có thể không truyền "đúng cách" Alt-D. Bạn có thể sử dụng CV để thực sự gửi chuỗi thoát thực tế đến Vim và sử dụng nó để tạo ánh xạ của bạn. Tức là, chỉnh sửa .vimrc của bạn và thay thế thực bằng cách nhập chuỗi sau "CV Alt-D" để bạn có chuỗi thoát chính xác trong vimrc của mình. Điều đó sẽ không hoạt động nếu thiết bị đầu cuối của bạn không gửi bất kỳ thứ gì đến vim.
Terminal của tôi sẽ tạo ra ^[x
các lệnh (ví dụ cho alt-x). Điều khiến nó hoạt động bên trong Vim là tập lệnh nhỏ này từ vim.wikia.com :
for i in range(97,122)
let c = nr2char(i)
exec "map \e".c." <M-".c.">"
exec "map! \e".c." <M-".c.">"
endfor
Thêm vào .vimrc để sửa tất cả các ánh xạ khóa alt.
như một phần tiếp theo câu trả lời của Bruno dành cho người dùng Mac, hãy thử đảm bảo rằng khóa tùy chọn của bạn được ánh xạ tới Esc+
.
Điều này sẽ cung cấp cho bạn hành vi "bình thường" của khóa tùy chọn ( A
) trong Vim.
Ví dụ, trong iterm2
, tùy chọn này có thể được tìm thấy dưới Preferences > Profiles > Keys
:
nnoremap <Esc>j :m .+1<CR>==
và tương tự ...
Xin chào sau nhiều năm thử nghiệm tất cả những điều trên trên mac không có giải pháp tốt nào, tôi vẫn tiếp tục tìm kiếm.
Đây là giải pháp của tôi:
Để tạo tổ hợp phím bao gồm Alt, bạn phải khai báo tổ hợp trong tùy chọn> bàn phím và sử dụng tổ hợp đó trong tệp thiết lập vim (chọn tùy chọn sử dụng làm phím meta).
Đầu ra phải là một ký tự bất thường ( a
ví dụ: không) để bạn không ghi đè một ký tự thông thường.
Trong ví dụ dưới đây, bạn sẽ có thể khá sôi động với ALT-Up.
cài đặt vim:
cài đặt mac: