Theo mặc định, không có đối tượng văn bản cho toàn bộ tệp, nhưng có thể tạo chúng bằng cách sử dụng omap
. Trong trường hợp này, nó sẽ trông giống như thế này:
onoremap f :<c-u>normal! mzggVG<cr>`z
Đây là một sự cố về cách thức hoạt động của nó:
onoremap f " make 'f' the text object name
:<c-u> " use <c-u> to prevent vim from inserting visual selection marker at the beginning of the command automatically.
normal! " use normal to make key presses ignoring any user mappings
mzggVG<cr>`z " make a marker in register z, select the entire file in visual line mode and enter the normal command, and go back to the z marker
Ghi chú:
Ctrlucó thể được sử dụng trong chế độ dòng lệnh để xóa mọi thứ ở bên trái của vị trí con trỏ. Lý do tại sao điều này được thực hiện là bởi vì nếu bạn nhập dòng lệnh trực tiếp từ chế độ trực quan, nó sẽ tự động chèn '<,'>
vào dòng lệnh và đó không phải là điều chúng ta muốn. Tôi cũng sẽ đề nghị bạn sử dụng một cái gì đó khác f
, bởi vì f
thường được sử dụng để di chuyển đến nhân vật được tìm kiếm tiếp theo trên dòng. Ví dụ, fi
sẽ đi đến dòng tiếp theo i
trên dòng hiện tại.
Các chủ đề trợ giúp có liên quan:
:help omap-info
:help :normal
:help c_CTRL-U
:help v_:
mmgg"+yG`m
và không bao giờ nghĩ về điều này. Cảm ơn, điều này sẽ xảy ra ngay trong .vimrc.