2015-03-04 12 views
6

Gần đây tôi đã kích hoạt chế độ chuột trong vim:cho phép di chuyển chuột nhưng không chọn chuột trực quan trong vim?

set mouse=a 

Mà tôi tình yêu dành cho di chuyển nhưng là khủng khiếp để làm nổi bật văn bản. Tôi đang sử dụng vim trong iTerm2 trên máy Mac. Bây giờ khi tôi chọn văn bản nó rất chậm để làm nổi bật (chỉ làm nổi bật sau khi làm nổi bật kéo xong) và văn bản được đánh dấu không được tự động sao chép vào clipboard của tôi, vì nó được sử dụng để sử dụng iTerm2 để chọn.

Có cách nào để cho phép di chuyển chuột/bàn di chuột trong vim mà không cần sử dụng chuột để chọn văn bản chế độ trực quan không?

Tôi đã thử:

set mouse=n 

nào ngăn chặn các văn bản từ việc nhấn mạnh khi tôi cố gắng và chọn, nhưng nó cũng ngăn ngừa iTerm2 từ làm nổi bật văn bản.

Cập nhật:

Nhờ this post Tôi nhận ra rằng tôi có thể nhận được gần như hành vi của tôi muốn bằng cách giữ phím tùy chọn, nhưng điều này là khá tẻ nhạt. Tôi thực sự muốn không cần phải giữ phím tùy chọn mỗi khi tôi chọn. Suy nghĩ?

Update2:

Nhờ những gợi ý trong các ý kiến ​​tôi đã có thể nhận được một chút gần gũi hơn. Tôi cần phải biên dịch lại vim để +clipboard được kích hoạt:

brew install vim 

Bây giờ nếu tôi sẵn sàng đưa lên với không nhìn thấy điểm nhấn của tôi cơ bản dở dang như một văn bản chọn sau đó tôi ít nhất vẫn có thể có được nó trong clipboard bằng yanking nó sau khi lựa chọn chế độ trực quan. Và nếu tôi thực sự muốn lựa chọn tốt hơn thái, tôi có thể giữ alt/option và nhận được hành vi lựa chọn iTerm2 ban đầu.

Tôi ước mình có thể đảo ngược các chế độ này. Ví dụ, mặc định cho hành vi được thực hiện bằng cách giữ alt/option và cho phép hành vi chế độ trực quan khi tôi muốn bằng phím ... nhưng tốt thôi, điều này là đủ tốt.

+0

Tại sao bạn không sử dụng '" + y' – romainl

+0

@romainl, Làm thế nào để –

+0

Thanh ghi '+' là khay nhớ tạm của hệ thống Nếu bạn chọn văn bản bạn muốn trong chế độ trực quan, bạn có thể sao chép nó bằng cách nhấn '" + y'. – EvergreenTree

Trả lời

1

câu trả lời ngắn: Tôi tin rằng điều đó là không thể!

Nhưng thường khó có thể chứng minh được sự vắng mặt của câu trả lời. Vì vậy, tôi sẽ cố gắng suy nghĩ về điều đó, và tôi hy vọng rằng bạn đã sai. Vì vậy, ở đây đi câu trả lời dài:

Thiết bị đầu cuối của bạn ở điều kiện "bình thường", xử lý chuột và ứng dụng dòng lệnh không biết gì về điều đó. Nhưng đôi khi, một ứng dụng yêu cầu kiểm soát các khả năng đầu cuối để có thể liên kết các sự kiện chuột để thực hiện "các công cụ". Đó là những gì sẽ xảy ra khi bạn thiết lập chuột = a: bạn thay đổi khả năng đầu cuối của bạn để nói rằng tất cả các sự kiện chuột được chuyển đến ứng dụng đang chạy, do đó, nó bắt buộc phải ràng buộc hoặc không hành động (chẳng hạn như cuộn, chọn , dán vv ..). Vì vậy, khi bạn đang sử dụng phím tùy chọn để có thể chọn ngay cả khi ứng dụng đang chạy có quyền kiểm soát con trỏ, đây là bản hack trên trình giả lập thiết bị đầu cuối (iTerm2 trong trường hợp của bạn) để có được hành vi mà bạn đang thực sự mong đợi.

Lời khuyên của tôi cho bạn sẽ là chuyển sang macvim (brew install macvim) cài đặt giao diện người dùng cho vim. Và sau đó bạn sẽ có lựa chọn mà chỉ hoạt động tốt, mặc dù nó chỉ ra khỏi thiết bị đầu cuối.

1

Với bản cập nhật của bạn, bạn nói rằng bạn gần như có thể có được những gì bạn muốn, nhưng lựa chọn đó không được sao chép tự động.

Cho rằng, bạn chỉ cần set clipboard+=autoselect guioptions+=a

Xem :help clipboard-autoselect để biết chi tiết.

1

Tốt nhất tôi đã tìm thấy là thêm nút bật tắt cho chế độ chuột.

Thêm dòng sau vào .vimrc sẽ chuyển mouse=a-mouse= và ngược lại khi phím được nhấn ,:

noremap , :if &mouse == "" \| set mouse=a \| else \| set mouse= \| endif<CR><CR> 
Các vấn đề liên quan