Làm thế nào để vim xác định kích thước của một bản chỉnh sửa đơn lẻ khi sử dụng một cách khác nhau khi sử dụng một cách khác nhau


17

Khi sử dụng uhoặc CTL-Rhoàn tác hoặc thực hiện lại một chỉnh sửa trong vim, tôi dường như thay đổi các đoạn văn bản, không chỉ là tổ hợp phím gần đây nhất.

Điều gì xác định kích thước của khối được coi là một chỉnh sửa duy nhất?

Câu trả lời:


19

Bạn đang tìm định nghĩa của undo-blocks.

Từ :h undo-blocks:

Một lệnh hoàn tác thường hoàn tác một lệnh đã gõ, bất kể lệnh đó có thực hiện bao nhiêu thay đổi. Chuỗi thay đổi hoàn tác này có thể tạo thành một khối hoàn tác. Do đó, nếu (các) phím được gõ gọi một hàm, tất cả các lệnh trong hàm sẽ được hoàn tác cùng nhau.

Các khối tương tự được sử dụng cho redo. Từ :h redo:

Những thay đổi cuối cùng được ghi nhớ. Bạn có thể sử dụng các lệnh hoàn tác và làm lại ở trên để hoàn nguyên văn bản về trạng thái của nó trước mỗi thay đổi. Bạn cũng có thể áp dụng các thay đổi một lần nữa, lấy lại văn bản trước khi hoàn tác.


4
Bạn cũng có thể tự ngắt một khối hoàn tác đơn bằng lệnh CTRL-G utrong chế độ chèn, rất hữu ích nếu bạn có một số macro chế độ chèn.
fruglemonkey

8

Chỉnh sửa phương thức của Vim thường được xem như một nhà điều hành (ví dụ c, d...) áp dụng trên một chuyển động (ví dụ iw, w, }, ...). Là một sản phẩm tuyệt vời, Vim trở nên mạnh mẽ. Khi mà các biên tập viên khác phải thực hiện một số dự đoán để biến nhiều người nhỏ thành các khối hoàn tác, Vim thực hiện điều này một cách tự nhiên. Một tác dụng phụ khác là điều này cung cấp cho bạn một toán tử lặp lại, .(còn gọi là lệnh dot).

Câu hỏi của bạn đặc biệt đề cập đến tổ hợp phím vì vậy tôi giả sử bạn muốn biết cách hoàn tác các thay đổi nhỏ khi ở chế độ chèn. Câu trả lời là đây không phải là "cách Vim". "The Vim Way" có nghĩa là bạn sẽ ở chế độ chèn để nổ ngắn tại một thời điểm. Điều này có nghĩa là khi các lỗi được thực hiện trong chế độ chèn, bạn thường chỉ thoát sang chế độ bình thường và sửa văn bản hoặc chỉ thực hiện hoàn tác uvà viết lại văn bản.

Đôi khi cần phải tách một khối hoàn tác trong khi ở chế độ chèn. Điều này có thể được thực hiện thông qua <c-g>utrong khi ở chế độ chèn. Xem :h :undoj:h undo-blocksđể biết thêm thông tin.

Để được trợ giúp thêm, tôi đề nghị như sau:

:h undo-blocks
:h :undoj
:h undo-tree
:h persistent-undo
:h undo.txt

Ngoài ra còn có một số screencasts về chủ đề này:


"Chunky hoàn tác" - mô tả hay nhất tôi từng thấy.
Matt Parker

6

Bạn cũng có thể nghĩ về nó theo cách này: mỗi khi bạn chuyển sang chế độ chèn để chỉnh sửa văn bản và bạn nhấn Esc, điều đó sẽ tạo thành một khối. Nếu bạn cố gắng hoàn tác khối đó, bạn sẽ đến vị trí tương tự trước khi bạn vào chế độ chèn.

Do đó, thỉnh thoảng bạn có thể "lưu" các thay đổi của mình bằng cách thoát khỏi chế độ chèn: giả sử bạn chuyển sang chế độ chèn và viết hàm. Bạn có thể tiếp tục mã hóa và chuyển sang chức năng tiếp theo, tuy nhiên đôi khi nên quay lại chế độ bình thường và chuyển sang chế độ chèn lại. Theo cách đó, bạn có thể cấu trúc mã của mình một cách đơn giản và nếu bạn cần quay lại, bạn có thể biết bạn sẽ ở vị trí nào.

Lưu ý: nếu bạn sử dụng mũi tên để di chuyển, sẽ giống như nếu bạn nhấn Esc+ [ hjkl]

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.