Xác định các lệnh tùy chỉnh cho các thanh ghi * và +


9

Nếu tôi đang sử dụng bản dựng Vim với xterm_clipboardtính năng thì nội dung bảng tạm hệ thống có sẵn thông qua +đăng ký.

Nếu bản dựng tôi đang sử dụng không có tính năng này, tôi có thể thực hiện "+đăng ký gọi các chương trình tùy chỉnh của mình để truy xuất và đặt bảng tạm hệ thống ( xsel -boxsel -bitương tự như vậy với xclip) không? Tương tự như vậy với "*để gọi xsel -poxsel -pi.

Vấn đề là có thể gõ một cái gì đó như thế "+pmà không phải lo lắng liệu tính năng này có sẵn hay không. Gõ :r !xsel -b<Enter>không phải là thứ tôi đang tìm kiếm: Tôi muốn các tổ hợp phím hoạt động tương tự và tôi muốn các biến thể dán tuân theo những gì có sẵn cho các thanh ghi của true true ( P, gp,,).

Phần thưởng: tôi có thể xác định các lệnh tùy chỉnh cho các tên đăng ký khác không?

Câu trả lời:


7

Một vài <expr>ánh xạ sẽ có thể thực hiện công việc ở đây. Cấu trúc cơ bản sẽ là

function! ClipboardOrXclip(command, register)
    if a:register !~ '[+*]' || has('xterm_clipboard') || has('gui_running')
        " Just return the original command if the clipboard is accessible
        " or it's not a register that should be handled by xsel
        return a:command
    endif
    if a:register == '+'
        return "<Esc>:r !xsel -bo<CR>"
    else
        return "<Esc>:r !xsel -po<CR>"
    endif
endfunction

nnoremap <silent> <expr> p ClipboardOrXclip('p', v:register)

Các chức năng sẽ cần phải được mở rộng để xử lý tất cả các biến thể của p, P, gp, vv nhưng điều này sẽ là một khởi đầu tốt.


Điều này dường như đang đi đúng hướng, nhưng nó không hoạt động. Một đồng bằng p(không có tên trước "và tên đăng ký) không làm gì khác ngoài "pxuất hiện trong dòng trạng thái. "aptương đương với a, "bptiếng bíp, ... Tôi không nhận được logic. "+tiếng bíp ngay lập tức, tôi thậm chí không thể nói rằng tôi có nghĩa là +hoặc *như một tên đăng ký.
Gilles 'SO- ngừng trở thành ác quỷ'

1
Giả sử những vấn đề cơ bản này đã được giải quyết, liệu có một danh sách đầy đủ các lệnh tôi cần ghi đè không? Bộ này trông có vẻ nản chí, đặc biệt là nếu tôi cũng muốn hỗ trợ kéo dài.
Gilles 'SO- ngừng trở thành ác quỷ'

@Gilles Cập nhật để sửa hành vi với các thanh ghi không - + / *. Vấn đề "+khi vim của bạn -xterm_clipboardgặp khó khăn hơn vì nó không bao giờ có chức năng này. Chỉ định một thanh ghi không hợp lệ ( +) hủy bỏ lệnh. VÌ VẬY, có vẻ như hành vi thực sự phải được đảo ngược để ánh xạ "+hoặc "*sau đó xử lý lệnh được chỉ định bởi người dùng ...
jamessan
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.