Ánh xạ Ctrl + s không hoạt động


9

Tôi đang cố gắng ánh xạ Ctrl+ sđể lưu tệp của mình nhưng nó không hoạt động.

Bản đồ của tôi:

map <C-s> :w <CR> :echo "Saved" <CR>
imap <C-s> <Esc> :w <CR> :echo "Saved" <CR> i

Khi ở chế độ chèn tôi nhìn thấy /:echo "Saved"ở góc dưới thay vì savedvà khi tôi ở chế độ bình thường, tôi thấy điều tương tự. Tôi đang làm gì sai?

Đây là trên cùng của vimrc của tôi để mã khác của tôi không gây ra vấn đề. Tôi đang chạy Vim bên trong OSX Terminal.


Bạn đang sử dụng Vim từ một thiết bị đầu cuối? Control + S cũng là một keybind đặc biệt được chọn bởi thiết bị đầu cuối có nghĩa là "dừng đầu ra" ... Khi tôi thử 2 keybind ở trên từ gVim, nó dường như hoạt động.
Martin Tournoij 7/03/2015

' I am also running vim inside the Mac terminal.' Có, tôi đang chạy vim qua thiết bị đầu cuối. Nó sẽ tốt hơn khi sử dụng Alt thay vì Ctrl hoặc Cmd?
iProgram

Nhân tiện, câu hỏi này đã được hỏi rất nhiều lần ;-) Tôi không có thời gian để viết câu trả lời, nhưng liên kết đó sẽ giúp bạn ...
Martin Tournoij 7/03/2015

Để liên kết lưu vào Cmd-S trên OSX, bạn có thể thử ánh xạ từ <D-s>mặc dù tôi không chắc liệu nó có hoạt động trong terminal Vim hay không và dù sao nó cũng đã là mặc định trong MacVim!
joeytwiddle

Câu trả lời:


6

Để đảm bảo rằng cách giải quyết này chạy ngay cả khi Vim được khởi động bằng một công cụ riêng biệt (chẳng hạn như git), tôi có cái này trong ~/.vimrc:

" Allow us to use Ctrl-s and Ctrl-q as keybinds
silent !stty -ixon

" Restore default behaviour when leaving Vim.
autocmd VimLeave * silent !stty ixon

Điều này đã làm việc cho tôi trên Linux, GVim, Mac OS X và MacVim.

Hãy cẩn thận:

  • Trên Windows, hoặc bất kỳ HĐH nào khác thiếu sttylệnh, những điều trên có thể sẽ xuất hiện lỗi mỗi khi Vim bắt đầu! ( silent!có thể tắt tiếng đó.)

  • Nếu hệ vỏ của bạn đã bị tắt cài đặt TTY này, dĩ nhiên chế độ VimLeavetự động sẽ bật lại! Phát hiện và khôi phục các cài đặt hiện tại là một lợi thế với phương pháp của @ aPyDeveloper.


Một sự kết hợp giữa giải pháp này và @ aPyDeveloper, xử lý các mối quan tâm tương thích trong OS X và Windows, sẽ rất tuyệt khi đăng lên đây và / hoặc trên Wiki!

Để tránh lựa chọn giữa stty -gstty --save, bạn có thể thử bài kiểm tra sau chỉ cho ixtùy chọn.

call system("stty -a | grep '\( \|^\)ixon\>' >/dev/null")
let g:ix_at_startup = (v:shell_error == 0)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.