2012-02-06 15 views
15

Trong Vim, có cách nào để di chuyển văn bản đã chọn vào <current_file>.bak, nối hoặc thêm không? Nếu có thể, tệp sao lưu sẽ không được hiển thị.Nối hoặc thêm văn bản đã chọn vào một tệp trong Vim

tôi hình dung công việc là:

  1. Chọn một số văn bản
  2. Loại :sbak
  3. Việc lựa chọn sẽ được lưu vào <current_file>.bak

Trả lời

26

bạn có thể làm điều đó trong ba bước:

  • loại Shift-vj ... j để chọn một số dòng
  • loại :'<,'>w! >>file.bak để SAV e chọn dòng để file.bak (append)
  • loại gvd xóa dòng gốc

Bạn có thể viết một lệnh do người dùng định nghĩa Sbak nếu bạn thích:

com! -nargs=1 -range Sbak call MoveSelectedLinesToFile(<f-args>) 
fun! MoveSelectedLinesToFile(filename) 
    exec "'<,'>w! >>" . a:filename 
    norm gvd 
endfunc 
+0

tốt, bây giờ các bước khác: 1. để tự động sử dụng .bak dưới dạng tên tệp bak 2. phần thêm không được thêm vào. thx. – greatghoul

+0

sử dụng 'expand ('%: t')' để lấy tên tệp hiện tại – kev

+0

thx, tôi hiểu rồi, tôi sẽ ánh xạ nó tới một lối tắt – greatghoul

10

gì về

  1. v
  2. một số lệnh phong trào/thậm chí tìm kiếm để chọn văn bản
  3. :'<,'> w! >> /YOUR/SELECTIONFILE
  4. :'<,'>d

Là những gì bạn muốn? Nếu vậy thiết lập một map cho nó, như

map <F2> :'<,'> w! >> /YOUR/SELECTIONFILE<cr>:'<,'>d<cr> 

Note này gắn thêm để SELECTIONFILE, không chỉ việc lựa chọn, nhưng toàn bộ dây chuyền. Ngoài ra, hãy đọc :h :w:h ++opt (trong đó bạn có thể tìm hiểu về các tùy chọn có thể để ghi tệp (ví dụ) bạn có thể thêm vào tệp có mã hóa khác, điều này thực sự gây rối, vì vậy đừng làm điều đó ;-)