2009-01-14 42 views
24

Trong nhiều GUI khi tôi chọn một phần của văn bản và sau đó nhấn Tab hay phím Shift +Tab nút phần được chọn sẽ thụt vào hoặc ra.Thao tác nhấn tab lựa chọn hình ảnh trong VIM

Trong VIM tôi có thể chọn một phần hình ảnh và sau đó nhấn < hay > chìa khóa để thay đổi thụt, tuy nhiên một khi tôi nhấn < phím chọn của tôi sẽ bị xóa vì vậy tôi đang mắc kẹt chọn phần một lần nữa và nhấn < một lần nữa. Điều này thực sự gây phiền nhiễu khi tôi đang cố gắng thụt lề một vài thứ và dừng phản hồi trực quan.

Có cách nào để thụt lề nội dung vào và ra trong vim khi vẫn chọn văn bản đã chọn hiện tại được chọn không?

Có một thủ thuật để tái bản đồ Tabphím Shift +Tab để họ cư xử theo cách này trong chế độ hình ảnh?

+0

Để có phím chỉnh sửa, hãy xem trợ giúp: bản đồ – derobert

Trả lời

31
vmap <Tab> >gv 
vmap <S-Tab> <gv 
+1

Lưu ý rằng mặc dù tính năng này hoạt động tốt với gVim, nhưng nó có thể không hoạt động đối với bàn điều khiển vim trừ khi vim và thiết bị đầu cuối của bạn đồng ý về cách thể hiện phím tắt Shift-Tab. –

+0

Để tham khảo, nó hoạt động trên thiết bị đầu cuối thả xuống Tilda. –

+0

Tôi có thể xác nhận điều này và bản đồ cũng sử dụng vmap cũng hoạt động trên gnome terminai trên Ubuntu. – Arda

41

Bạn có thể đặt trước một số, ví dụ: "2>" để thụt lề hai điểm dừng tab. Hoặc, bạn có thể sử dụng ">" để thụt lề một lần, sau đó "." để thụt lề lại (điều này hoạt động ngay cả khi khối không còn được đánh dấu). Nếu bạn đi quá xa, "u" sẽ hoàn tác một bước tại một thời điểm.

Một lệnh hữu ích khác là "gv" để khôi phục khối hình ảnh cuối cùng, nếu bạn cần áp dụng một lệnh khác.

+0

Đây là lời khuyên tuyệt vời! –

3

Hoặc, bạn có thể đi theo cú đúp gần nhất và gõ =% ở chế độ bình thường - nó thụt vào khối bao phủ bởi dấu ngoặc ôm và khớp nối của nó. Nhưng tôi không chắc làm thế nào điều này là hữu ích trong một ngôn ngữ như Python.

0

Vì tôi đã từ bỏ vi thành vim, tôi chưa bao giờ sử dụng> cũng không phải < nữa. Tôi khai thác vim tự động thụt đầu dòng có thể được kích hoạt một cách rõ ràng với =

Nó hoạt động rất tốt để chuyển động như = a {mà thậm chí còn hiệu quả hơn =%

Nếu không, Nếu một> là không đủ, chỉ cần thực hiện lại nó với., hoặc hoàn tác thay đổi với u.

5

Một cách khác là để chọn một khối và chèn một thụt vào đầu dòng sử dụng trình tự này:

  1. ctrl+V + phím mũi tên để chọn khối.
  2. I để chuyển sang chế độ chèn sao cho văn bản được chèn được chèn vào đầu lựa chọn trong mỗi dòng trong khối đã chọn.
  3. ctrl+T để tăng thụt lề hoặc ctrl+D để giảm thụt lề. Bạn có thể thêm bất kỳ số lượng thụt lề nào như thế này. Lưu ý: Sự thụt đầu dòng sẽ chỉ nhìn thấy dòng đầu tiên của khối, nhưng khi chế độ chèn được thoát thì thụt đầu dòng sẽ được sao chép trên tất cả các dòng trong khối.
+0

Điều này không hoạt động ... Im học được rất nhiều hôm nay :) –

+0

không hoạt động đối với tôi – hB0

1

Hãy thử >} để 'thụt lề đoạn tiếp theo một cấp'.

4

Hãy thử sử dụng "." để lặp lại lệnh. Nó ghi nhớ phạm vi và bạn có thể sử dụng "u" để hoàn tác một cấp nếu bạn đi quá xa. Không cần cấu hình.

3

Bản đồ phím sau hoạt động như giải pháp của Brian, Nhưng cũng giữ vị trí con trỏ liên quan đến từ đó.

" tap indent movement (use mark `m' for cursor position) 
vmap <S-Tab> mm<`m:<C-U>exec "normal ".&shiftwidth."h"<CR>mmgv`m 
vmap <Tab> mm>`m:<C-U>exec "normal ".&shiftwidth."l"<CR>mmgv`m 
0

Với lựa chọn khối hình ảnh

bước:
Chọn khối (Ctrl + v)
loại c (thay đổi)
loại cần không gian
loại esc

enter image description here

Các vấn đề liên quan