Sử dụng backspace để sửa đổi lệnh hiện tại trong chế độ bình thường?


9

Đôi khi, khi nhập lệnh ở chế độ bình thường, bạn có thể mắc lỗi đánh máy, ví dụ nếu tôi có ý định gõ 10dk, tôi có thể vô tình bắt đầu nhập 19d.

Vì lệnh chưa được hoàn thành / cam kết, có thể xóa các khóa không chính xác bằng cách sử dụng backspace, như vậy : 19d<backspace><backspace>0dk, thay vì phải nhấn thoát và thử lại lệnh?

Câu hỏi bên lề: Có một thuật ngữ Vim cho cấu trúc dữ liệu giữ lệnh hiện tại trước khi nó được cam kết không?


1
Có lẽ, điều này có thể được yêu cầu như là một tính năng trong các phiên bản mới hơn!
SibiCoder


4
AFAIK là không thể - nhưng, vì các chuỗi này ngắn, tôi không chắc những gì đạt được sẽ làm cho tính năng này hoàn thành. Khi bạn phải thử lại toàn bộ chuỗi, ít nhất bạn sẽ bị "buộc" lặp lại cho đến khi bạn không mắc phải những lỗi đó;) (nghĩa là - lặp lại xây dựng nhân vật! Chơi chữ có chủ đích).
VanLaser

1
Cơn ác mộng tồi tệ nhất @VanLaser Một Vimmer đang được "buộc" để lặp lại một cái gì đó;) Ngoài ra, tôi suck lúc gõ và có một bàn phím trống do đó, nó không phải là hiếm đối với tôi để mess up một lệnh 256 lần trước khi nhận nó đúng.
HellaMad

4
Điều gì có thể đi sai khi một người đánh máy xấu sử dụng một bàn phím trống?
romainl

Câu trả lời:


3

Không có cách nào để làm điều đó và điều bình thường là không có: các lệnh chế độ thông thường thường khá ngắn và có thể bị hủy Escnếu bạn làm hỏng nó.

Một cách giải quyết khác có thể là sử dụng :normallệnh. Nó làm cho quá trình lâu hơn nhưng ví dụ nếu bạn gõ :normal 10jvào dòng lệnh, Vim sẽ thực thi 10jnhư thể bạn gõ nó ở chế độ bình thường. (Xem :h :normal)

Bạn cũng có thể thêm những dòng này vào .vimrc:

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

Họ tạo ra một ánh xạ (ở đây F4nhưng sử dụng bất cứ thứ gì bạn muốn) sẽ gọi hàm NormalModeCommand().

Hàm cho phép bạn nhập một chuỗi trong dòng lệnh và sau đó thực thi chuỗi bạn đã nhập như một lệnh chế độ bình thường. Khi bạn gõ chuỗi trong dòng lệnh, bạn có thể sửa nó như mọi lệnh khác. Tất nhiên điều đó không lý tưởng nhưng một lần nữa Vim không có ý định làm điều đó.

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.