Hoàn tác trong chế độ chèn


23

Có một lệnh để hoàn tác thao tác cuối cùng được thực hiện trong khi ở chế độ chèn không?

Tôi vừa dán văn bản từ đăng ký sai bằng cách sử dụng <C-r>và tôi có hai tùy chọn:

  1. Xóa bằng tay những gì tôi vừa dán và bắt đầu lại.
  2. Chuyển sang chế độ bình thường, nhấn uvà mất văn bản tôi đã nhập trước khi nhấn <C-r>.

Có cách nào tốt hơn?

Câu trả lời:


16

Vim cung cấp một khả năng hạn chế để chỉ định phạm vi của một thay đổi không thể hoàn tác với Ctrl-G ulệnh, phá vỡ chuỗi hoàn tác. Xem

:help i_CTRL-G_u

Trong trường hợp của bạn, giải pháp sẽ là ánh xạ lại <C-R>như thế này:

:inoremap <C-R> <C-G>u<C-R>

Sau đó nhập <C-O>usẽ hoàn tác chỉ những thay đổi được thực hiện kể từ khi bạn nhập <C-R>. Xem

:help i_CTRL-O

1
Thật tuyệt vời, tôi không biết về lệnh này. Có một độ trễ khá dài giữa việc gõ <C-O>uvà xem kết quả trên màn hình (khoảng 4 giây), có ý tưởng nào về cách tôi có thể thoát khỏi điều đó không?
zool

Tôi cũng nhận thấy điều đó. Tôi không biết; Tôi sẽ cố gắng tìm hiểu.
garyjohn

Này, có thể bạn có nghĩa là <CR> (trở về vận chuyển) thay vì <CR> (ctrl-r)?
Derwent

Không. Câu hỏi ban đầu liên quan đến hành vi của <CR>, vì vậy đó là những gì ánh xạ sử dụng. Tuy nhiên, thay vào đó, bạn có thể thay thế <CR> bằng <CR> để ánh xạ hoàn tác bị gián đoạn bởi <CR>. Nhiều ví dụ có thể được tìm thấy tại :help i_CTRL-G_u.
garyjohn

6

Từ chế độ chèn:

  1. Nếu văn bản đã dán của bạn nhỏ hơn một dòng (đó là điểm thứ 2 của bạn ngụ ý), chỉ cần nhấn <C-u>để xóa tất cả các ký tự trước khi con trỏ trong dòng hiện tại.

  2. Nếu văn bản được dán nhiều hơn một dòng, giải pháp thứ 2 của bạn sẽ hoạt động tốt hơn, được điều chỉnh như sau : <C-o>u.

Cả hai điểm trên sẽ bắt đầu và ở lại - hoặc kết thúc - trong chế độ chèn; chúng thực sự giống với các giải pháp đề xuất của bạn, chỉ được thực hiện ngắn hơn :)


6

Bạn có thể thử <C-w>(xóa một từ bên trái) hoặc <C-u>(xóa các ký tự trước khi con trỏ khi nhấn một lần, xóa ngắt dòng khi nhấn lần thứ hai). Xem :help i_CTRL-W:help i_CTRL-U.

Nếu bạn dán nhiều từ một thanh ghi thì dĩ nhiên là nhanh hơn để hoàn tác các thay đổi của bạn, bạn có thể sử dụng chế độ chèn-bình thường với <C-o>điều đó (thực hiện một lệnh chế độ bình thường sau đó quay lại chế độ chèn).

Nói chung, rất hữu ích khi chia các chỉnh sửa của bạn thành các phần nhỏ bằng cách thường xuyên quay lại chế độ bình thường, để bạn có các khả năng hoàn tác chi tiết.

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.