Có cách nào để chèn một ký tự và sau đó thoát chế độ chèn không?


10

Khi tôi đang duyệt văn bản và, ví dụ, thêm backticks xung quanh một số từ hoặc trích dẫn nhất định hoặc bất cứ điều gì, thật khó chịu khi tôi phải nhấn Esc hoặc Ctrl- [sau mỗi lần chèn. Các phần chèn (và phần bổ sung) là khác nhau, vì vậy .không giúp được gì nhiều.

Có điều gì tương tự như rquay trở lại chế độ bình thường sau một ký tự đơn lẻ nhưng sử dụng chế độ chèn thay vì chế độ thay thế không?


3
Có lẽ bạn nên cân nhắc sử dụng (hoặc mở rộng) plugin vim-Surround , để làm việc trên văn bản theo cách có ý nghĩa hơn.
VanLaser

Câu trả lời:


11

Nếu không có (tôi chưa nhìn), bạn có thể sử dụng ánh xạ này trong .vimrc:

nnoremap <C-I> i <ESC>r

inserts, đặt một khoảng trắng, ESCvượn và bắt đầu một chữ cái duy nhất r. Điều này được ánh xạ tới CtrlI.

Đó là một hack và sẽ để lại một khoảng trống nếu bạn nhấn thoát trước khi bạn gõ một chữ cái - nhưng tốt hơn là không có gì!


1
Không tệ ... Có lẽ tôi sẽ sử dụng nó nếu không ai nghĩ ra thứ gì tốt hơn. :)
tự đại diện

2
@Wildcard Tôi không nhận ra mình thực sự gặp phải trường hợp sử dụng này đến mức nào mà không nhận ra. Câu hỏi hay :) Tôi cũng đã thêm nó vào vimrc của riêng mình.
Qix - MONICA ĐƯỢC PHÂN BIỆT

2
Tôi đã dành hầu hết thời gian trong ngày để sửa chữa một loạt các markdown. Chữ in nghiêng, mã nội tuyến, thụt đầu dòng, siêu liên kết ... tất cả chúng đều chèn một ký tự. :) Trên thực tế giải pháp của bạn là hoàn hảo; Tôi sẽ bắt đầu sử dụng nó ngay bây giờ.
tự đại diện

2
Nhược điểm: Không thể lặp lại với .lệnh. :(
tự đại diện

1
Thật không may, @Wildcard, sau khi thực hiện một chút nghiên cứu, không có cách nào để tạo một nhánh lặp lại thủ công .trừ khi bạn đang sử dụng repeat.vim.
Qix - MONICA ĐƯỢC PHÂN BIỆT

0

Để chèn một char ở cuối từ (thay vì ở vị trí con trỏ), hãy sử dụng

nnoremap <C-a> a <ESC>r

Bản đồ này Ctrl + a, bạn có thể ánh xạ nó tới bất cứ điều gì khác tất nhiên.

Tôi có hai cái .vimrcchỉ vì vậy tôi không hối hả lắm :)

" Insert char at cursor position
nnoremap <C-i> i <ESC>r
" Append char after cursor position
nnoremap <C-a> a <ESC>r
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.