Câu trả lời:
Sử dụng ci"
, có nghĩa là: thay đổi những gì bên trong dấu ngoặc kép.
Bạn cũng có thể thao tác các đối tượng văn bản khác theo cách tương tự, ví dụ:
ci'
- thay đổi bên trong các dấu nháy đơnciw
- thay đổi bên trong một từ ci(
- thay đổi bên trong dấu ngoặc đơndit
- xóa bên trong thẻ HTML, v.v.Tìm hiểu thêm về các đối tượng văn bản vim khác nhau tại đây .
F"ci"
.
Bạn có thể chọn giữa các dấu ngoặc kép và sau đó xóa ( d
), thay đổi ( c
), v.v. bằng cách sử dụng
vi"
Tương tự, bạn có thể thay thế các dấu ngoặc nhọn, dấu ngoặc nhọn, các phần tử XML, v.v. do đó:
vi(
vi{
vit
hoặc đơn giản là thay đổi / xóa, thực hiện tương ứng di"
, ci"
v.v. Việc thay thế a
cho i
sẽ bao gồm các phần tử xung quanh ( ví dụ: bạn đánh dấu hoặc thay đổi dấu ngoặc và nội dung)
Tôi đã tạo một plugin vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotes
Nó cung cấp các đối tượng văn bản cho các cặp dấu ngoặc kép gần nhất của bất kỳ loại nào và hỗ trợ các dấu ngoặc kép kéo dài nhiều dòng. Chỉ sử dụng iq
hoặc aq
nó cho phép bạn thao tác trên nội dung của dấu nháy đơn ('), kép (") hoặc dấu ngoặc kép (`) hiện đang bao quanh con trỏ, ở phía trước con trỏ hoặc phía sau (theo thứ tự ưu tiên đó) Nói cách khác, nó nhảy về phía trước hoặc phía sau khi cần thiết để đạt được dấu ngoặc kép.
Dễ hiểu hơn bằng cách xem các ví dụ (con trỏ được hiển thị với |
):
foo '1, |2, 3' bar
; sau khi nhấn diq
:foo '|' bar
foo| '1, 2, 3' bar
; sau khi nhấn diq
:foo '|' bar
foo '1, 2, 3' |bar
; sau khi nhấn diq
:foo '|' bar
foo '1, |2, 3' bar
; sau khi nhấn daq
:foo | bar
foo| '1, 2, 3' bar
; sau khi nhấn daq
:foo | bar
foo '1, 2, 3' |bar
; sau khi nhấn daq
:foo | bar
Các ví dụ trên được đưa ra cho dấu ngoặc kép đơn, plugin hoạt động giống hệt như cách đối với dấu ngoặc kép (") và dấu ngoặc kép (`).
Bạn cũng có thể sử dụng bất kỳ nhà khai thác khác: ciq
, diq
, yiq
, viq
,, vv
Vui lòng xem trang github được liên kết ở trên để biết thêm chi tiết.
Từ bên trong các dấu ngoặc kép, bạn có thể làm
di"
Đọc nó như xóa bên trong "
Ngoài câu trả lời của Brian, bạn cũng có thể p
(dán) và y
(kéo) giá trị mới, vì vậy nếu bạn muốn thay thế giá trị bên trong dấu ngoặc kép bằng một giá trị khác, bạn có thể thực hiện yi"
trên lựa chọn mà bạn muốn sao chép, vi"
để chọn khu vực mà bạn muốn thay thế và sau đó chỉ cần p
thay thế đúng giá trị.
Câu trả lời đã chọn CHỈ phù hợp với ViM nhưng KHÔNG phù hợp với vi. Câu hỏi này cũng không chính xác vì tác giả đã không đề cập đến vị trí ban đầu của con trỏ là gì. Nếu chúng ta giả sử rằng con trỏ nằm trong dấu ngoặc kép thì đối với vi câu trả lời sẽ là:
T"ct"
Ở đâu:
T "- lùi lại ngay sau ký tự"
c - lệnh thay đổi
t "- cung cấp vị trí kết thúc cho lệnh c, nơi nó sẽ ngừng xóa ký tự, nói cách khác là phạm vi thay đổi
vim
, nhưng KHÔNGvi
. (Không chắc chắn)