Câu trả lời:
Lệnh dwsẽ xóa từ vị trí con trỏ hiện tại đến đầu ký tự từ tiếp theo. Lệnh d$(lưu ý, đó là ký hiệu đô la, không phải là 'S') sẽ xóa từ vị trí con trỏ hiện tại đến cuối dòng hiện tại. Dlà một từ đồng nghĩa với d$.
dw
, nhưng tôi đoán tôi chỉ cho rằng sẽ có lệnh "xóa phần còn lại của dòng này". Ví dụ dòng của tôi có ip=|10.1.1.1
với |
là vị trí con trỏ. Có một lệnh sẽ xóa tất cả 10.1.1.1
?
d$
:!rm -f %
và sau đó :q!
. Điều đó xóa toàn bộ tập tin.
d^
('d' + caret) ... về cơ bản d + bất kỳ nhân vật nào thường di chuyển con trỏ tôi nghĩ, nhưng tôi đang tự học Vim, vì vậy tôi có thể sai về điều đó.
Như những người khác đã đề cập: bạn có thể sử dụng d$
hoặc D
( shift- d) để xóa từ vị trí con trỏ cho đến cuối dòng.
Những gì tôi thường thấy hữu ích hơn là c$
hoặc C
( shift- c) vì nó sẽ xóa khỏi vị trí con trỏ cho đến cuối dòng và đưa bạn vào chế độ [INSERT].
D
với hầu hết mọi người, theo ý kiến của tôi, vì nó không đưa bạn trở lại một khoảng trống ở cuối dòng.
i
, chèn trước con trỏ và a
chèn sau con trỏ. Nếu con trỏ của bạn ở cuối dòng và bạn muốn chèn ở cuối dòng, bạn chỉ có thể sử dụng a
.
Một trong những điều tốt đẹp về vi là cấu trúc lệnh logic của nó. d
theo sau là một lệnh chuyển động d bỏ qua mục tiêu của chuyển động đó. $
di chuyển đến cuối dòng (mnemonic: like in regexps). Vì vậy, d$
xóa đến cuối dòng. Tương tự, e
di chuyển đến e nd của từ hiện tại, và w
di chuyển đến đầu tiếp theo w ord; vì vậy de
xóa phần cuối của từ hiện tại và dw
xóa thêm khoảng trắng sau.
<kbd>
cho các khóa thực tế, không phải cho các chuỗi lệnh. Ví dụ <kbd>Ctrl</kbd>+<kbd>C</kbd>
, nhưng d$
.
Bạn có thể muốn sử dụng D. Di chuyển con trỏ đến ký tự đầu tiên bạn muốn xóa, sau đó nhấn shift-D. Mọi thứ đã biến mất. Trên thực tế, nó nằm trong bộ đệm cắt mặc định, vì vậy bạn có thể P hoặc p dán lại.
Tôi sử dụng Dp (xóa đến cuối dòng, sau đó đặt lại), di chuyển đến cuối một số dòng khác, sau đó p một lần nữa để dán cùng một văn bản ở cuối dòng khác này. Hoạt động kỳ diệu trong các tệp cấu hình, nơi bạn cần đặt một số URL phức tạp ở hai hoặc nhiều nơi.
Tôi nghĩ rằng một phím tắt chế độ chèn có thể có ích.
Trong chế độ chèn có thể tốt hơn là bắt đầu thay đổi cho đến khi kết thúc dòng (đặt cái này vào của bạn ~/.vimrc
):
inoremap <C-l> <C-o>C
Vì vậy, như bạn đã nói, Dở chế độ bình thường và Ctrl+ lở chế độ chèn. Như bạn có thể thấy bạn cũng Cbắt đầu thay đổi cho đến cuối dòng.
<C-o> ......... insert normal keystroke in insert mode
Tôi đã chọn Ctrl- lbởi vì l
dưới ngón tay của bạn. Các Ctrl- kđã được sử dụng để chèn chữ ghép.
Tôi đã tìm kiếm thông qua :h i_Ctrl
một số keybindings miễn phí, và nó thực sự là vấn đề lớn hơn khi tạo ra các phím tắt mới để thực hiện các hành động trong vim.
Để xóa một phạm vi các dòng từ sau vị trí con trỏ, 3Dsẽ xóa từ con trỏ cho đến hết dòng, cũng như hai dòng tiếp theo (nghĩa là xóa 3 dòng sau vị trí con trỏ).
ví dụ: cho văn bản sau (con trỏ đại diện là |
),
If there's a cursor |in the line
here
we
go
Sử dụng lệnh 3Dsẽ xuất ra:
If there's a cursor
go