Làm cách nào tôi có thể kéo (sao chép) ký tự đơn mà con trỏ nằm trên đó?


49

Tôi biết nhiều cách để sao chép mọi thứ:

yiw= yank trong từ hiện tại
yaw= yank all word (bao gồm một dấu cách)
yy = yank dòng hiện tại
3yy= yank ba dòng bắt đầu từ hiện tại
yap= yank tất cả đoạn (bao gồm cả dòng mới)

Tôi cũng có thể xóa hoặc thay đổi một ký tự:

x= xóa ký tự dưới con trỏ
r= thay thế ký tự dưới con trỏ

Nhưng làm thế nào trên thế giới bạn chỉ cần sao chép một ký tự dưới con trỏ?

Động lực của tôi là tôi đang lập trình trong Perl 6 và một số toán tử là các ký tự Unicode. Ngay bây giờ, tôi đang sử dụng Perl 6 Config :: mã INI của tadzik làm điểm bắt đầu cho trình phân tích cú pháp tùy chỉnh, và tôi muốn sao chép chỉ một ký tự trích dẫn tiếng Pháp (một toán tử siêu tốc) từ dòng này :

my %hash = $<sections>».ast;

Tôi có thể sử dụng phiên bản hai ký tự "Texas" của siêu toán tử >>, nhưng tôi nghĩ rằng nó trông tốt hơn và ít mơ hồ hơn >>>:

my %hash = $<sections>>>.ast;

nhập mô tả hình ảnh ở đây
nhập mô tả hình ảnh ở đây


1
Dễ dàng, soạn các hoạt động với các chuyển động, như thường lệ:yl
VanLaser

@VanLaser Ý kiến ​​hay! Tôi đã nghĩ rằng phong trào sẽ không hoạt động bởi vì tôi chỉ muốn một nhân vật. Nhưng đề xuất của bạn hoạt động rất tốt cho ASCII. Đăng nó như một câu trả lời và tôi sẽ bỏ phiếu. Điều thú vị là nó không hoạt động với ký tự Unicode này, nhưng ytX(" yank til X") dường như hoạt động khi Xký tự ở bên phải.
Christopher Bottoms

Tôi tự hỏi, đó có phải là một ký tự, có thể là Unicode hay không có hai ký tự, được ẩn / thay thế bằng concealtính năng Vim ?
VanLaser

@VanLaser Có vẻ như hai "nhân vật".
Christopher Bottoms

BTW, làm thế nào để bạn giới thiệu »nhân vật?
VanLaser

Câu trả lời:


41

Kết hợp hoạt động yank với chuyển động thường được sử dụng "một ký tự bên phải" sẽ hoạt động : yl.

BTW (để bình luận về một bình luận OP), đối với tôi »có thể được kéo theo cách này, trong gVim hoặc terminal Vim. Có lẽ một vấn đề mã hóa (tập tin)?


4
Yanking »hoạt động tốt cho tôi quá. Tôi sử dụng vyđể kéo một nhân vật duy nhất. Không chắc chắn tại sao tôi sử dụng nó hơn là yl, có thể tôi đã có một lý do có ý thức một lần nhưng bây giờ nó chỉ là phản xạ.
jjaderberg

3
Tôi đã luôn y<space>nghĩ rằng đó là nhân vật kéo theo con trỏ và tôi sẽ thêm nó vào như một câu trả lời nhưng sau khi kiểm tra sự giúp đỡ tôi nhận ra <space>llà điều tương tự.
Brett Y

Điều đó thật tuyệt, và dường như còn dễ trúng hơn, ngoại trừ khi không gian được sử dụng làm thủ lĩnh.
VanLaser

1
@jjaderberg Tôi thích bình luận của bạn, xin vui lòng gửi nó như một câu trả lời. Cảm ơn!
Christopher Bottoms

1
@brettanomyces Tôi thích bình luận của bạn, xin vui lòng gửi nó như một câu trả lời. Cảm ơn!
Christopher Bottoms

14

Thông thường tôi nhấn vy( visual yank ), đôi khi xu( xóa hoàn tác ) quá. Ngoài ra, nếu bạn muốn kéo char trước con trỏ, thay vì lvy, bạn có thể nhấn Xu, tôi nghĩ đó là lý do tại sao tôi nhấn xucho hiện tại. :-)

Lưu ý rằng, Xusẽ làm cho con trỏ của bạn di chuyển đến char đó.


Bạn có ý nghĩa hvy. Tôi đã cố gắng chỉnh sửa nó, nhưng rõ ràng việc sửa một ký tự trong lệnh vim không phải là một thay đổi đáng kể để được chấp nhận.
Shahbaz

9

Cách đơn giản nhất mà tôi biết để làm điều này là sử dụng xđể xóa ký tự, cũng đặt nó vào bộ đệm, và sau đó Pđặt nó trở lại. Sau đó, bạn có thể di chuyển con trỏ xung quanh và dán lại ký tự bất cứ nơi nào bạn muốn p(sau con trỏ) hoặc P(trước con trỏ), miễn là bạn không thay đổi bộ đệm.

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.