Chèn ký tự đơn trong Vim?


25

Trong Vim (7.2), có một lệnh chế độ bình thường rđể thay thế một ký tự đơn bằng một ký tự khác. Ví dụ: nhập rXsẽ thay thế một ký tự dưới con trỏ Xvà sau đó đưa bạn trở lại chế độ bình thường.

Có một lệnh chế độ bình thường để chèn một ký tự và sau đó trở về chế độ bình thường không?


1
Trang web chéo có thể trùng lặp: stackoverflow.com/questions/1557893/ Từ
Ciro Santilli 改造 心 心

Xem vim.wikia.com/wiki/Insert_a_single_character để biết giải pháp toàn diện.
Maxim Suslov

Câu trả lời:


6

MelBurslan đúng là tính năng này không tồn tại, nhưng việc tạo một lệnh do người dùng định nghĩa không thực sự là cách để tạo ra nó. Tôi đã mày mò vài phút và nghĩ ra điều này:

:nmap <silent> ,s "=nr2char(getchar())<cr>P

Trong đó sử dụng một số thủ thuật Vim liên quan đến việc "đặt" văn bản từ một thanh ghi, trong trường hợp này là thanh ghi "biểu thức". Biểu thức được cắm vào thanh ghi là " nr2char(getchar())" sẽ trả về một chuỗi ký tự đơn.

Lý do tôi xây dựng ánh xạ theo cách này là vì việc người dùng nhập "giữa chừng" một ánh xạ là khó khăn và có thể hành xử không thể đoán trước; thậm chí ánh xạ này sẽ thả con trỏ xuống khu vực trạng thái trong khi chờ người dùng nhập một ký tự.


8

Cảm ơn Johnny đã cho chúng tôi câu trả lời tuyệt vời này trong các bình luận dưới đây:

":nmap <C-i> i_<Esc>r"

Điều đó ánh xạ Control + i để chèn một ký tự đơn và nó thực hiện rất chính xác.

Trong tệp vimrc của bạn, nó sẽ trông như sau:

nnoremap <C-i> i_<Esc>r

Tôi đã thay đổi ánh xạ của mình để sử dụng không gian và bạn có thể thay đổi ánh xạ của bạn thành (các) khóa ưa thích của bạn:

nnoremap <Space> i_<Esc>r

1
Đây là câu trả lời ngắn gọn và đơn giản nhất.
Dylanthepiguy

4

Theo như tôi biết, không có chức năng nào như vậy trong bất kỳ trình biên tập vi phân phối rộng rãi nào, nhưng vim có một phương tiện để tạo các lệnh tùy chỉnh. Nó đã được thảo luận ở đây: trong chủ đề này

Bạn có thể tạo lệnh tùy chỉnh làm những gì bạn muốn làm.


3
Đây là lệnh để ánh xạ Ctrl-I để chèn một ký tự duy nhất: ": nmap <Ci> i_ <esc> r"
Johnny

2

Một cách đơn giản để làm điều này là sử dụng các lệnh Cut xand Put p. Nói rằng đó *là nhân vật bạn muốn chèn. Chèn nó bằng cách sử dụng i * Esc. Rồi đánh x. Điều đó sẽ cắt nhân vật. Bây giờ, bạn có thể nhấn pđể đặt ký tự đơn. Nếu bạn cần chèn ký tự đó 300 lần, bạn có thể gõ : 300p.

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.