http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
Chuyển đổi tự động thụt lề để dán mã
Lý lịch
Nếu bạn sử dụng các lệnh Vim để dán văn bản, không có gì bất ngờ xảy ra. Vấn đề chỉ phát sinh khi dán từ một ứng dụng khác và chỉ khi bạn không sử dụng phiên bản GUI của Vim. Trong phiên bản console hoặc terminal của Vim, không có quy trình chuẩn để dán văn bản từ ứng dụng khác. Thay vào đó, thiết bị đầu cuối có thể giả lập dán bằng cách chèn văn bản vào bộ đệm bàn phím, vì vậy Vim nghĩ rằng văn bản đã được người dùng gõ. Sau khi mỗi dòng kết thúc, Vim có thể di chuyển con trỏ để dòng tiếp theo bắt đầu với cùng thụt lề như cuối cùng. Tuy nhiên, điều đó sẽ thay đổi thụt lề đã có trong văn bản đã dán.
Dán chuyển đổi
Đặt phần sau vào vimrc của bạn (thay đổi thành bất kỳ khóa nào bạn muốn):
set pastetoggle=<F2>
Để dán từ ứng dụng khác:
- Bắt đầu chế độ chèn.
- Nhấn F2 (bật tùy chọn 'dán').
- Sử dụng thiết bị đầu cuối của bạn để dán văn bản từ bảng ghi tạm.
- Nhấn F2 (tắt tùy chọn 'dán').
Sau đó, thụt lề hiện có của văn bản dán sẽ được giữ lại.
Bạn không phải bắt đầu chế độ chèn trước, nhưng nếu bạn ở chế độ bình thường và có ánh xạ cho F2, ánh xạ đó sẽ được áp dụng và chức năng 'pastetoggle' sẽ không hoạt động.
Một số người thích phản hồi trực quan được hiển thị trong dòng trạng thái bằng cách thay thế sau cho vimrc của bạn:
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode
Dòng đầu tiên thiết lập ánh xạ để nhấn F2 ở chế độ bình thường sẽ đảo ngược tùy chọn 'dán' và sau đó sẽ hiển thị giá trị của tùy chọn đó. Dòng thứ hai cho phép bạn nhấn F2 khi ở chế độ chèn, để bật và tắt 'dán'. Dòng thứ ba cho phép hiển thị liệu 'dán' có được bật trong chế độ chèn hay không.