Bạn có thể remap Home để được giống như ^ (các tài liệu nói Home 's chức năng mặc định là tương đương với lệnh phong trào |):
:map <Home>^
:imap <Home> <Esc>^i
nào nên làm cho bản đồ chế độ chèn tương đương với thoát ra khỏi chế độ chèn , nhấn ^ và sau đó quay lại chế độ chèn. Tôi không biết về phương pháp tốt nhất của ánh xạ một lệnh chuyển động để sử dụng bên trong chế độ chèn, do đó, điều này có thể phá vỡ một cái gì đó, nhưng nó có vẻ làm việc.
Khi cài đặt thụt đầu dòng, chúng không ảnh hưởng đến điều khiển chuyển động, nhưng tôi cũng nghĩ bạn có thể muốn chúng được đặt khác nhau. autoindent chỉ giữ lại thụt đầu dòng hiện tại của bạn cho các dòng mới (vì vậy nếu bạn đặt 4 dấu cách ở đầu dòng, sau khi bạn nhấn trở lại dòng mới của bạn cũng sẽ có 4 dấu cách được đặt trước nó). Tôi không biết tại sao bạn không muốn điều đó, vì nó khá hữu ích trong bất kỳ ngôn ngữ lập trình nào, hoặc thậm chí chỉ là văn bản tự do. Mặt khác, smartindent thực hiện một vài quy tắc thụt lề C-ish được mã hóa cứng, như thụt lề sau khi mở {, và deindenting sau khi đóng cửa}, nhưng không tự động chuyển thụt đầu dòng từ các dòng trước đó. Các tài liệu khuyên bạn nên giữ tự động trên nếu bạn sử dụng smartindent.
Tuy nhiên, smartindent là vô ích đối với các ngôn ngữ không đáp ứng các quy tắc mã hóa cứng hoặc thậm chí có hại (như khi nó tự động xóa thụt đầu dòng từ bất kỳ dòng nào bắt đầu bằng '#'. nhưng là sai cho các lập trình viên python cố gắng viết một bình luận thụt vào).
Vì vậy, vim cũng bao gồm chế độ thụt lề nâng cao hơn, cho phép các quy tắc thụt lề linh hoạt trên cơ sở từng ngôn ngữ/kiểu tệp và là chế độ thụt lề ưa thích cho hầu hết mọi người (ngay cả đối với ngôn ngữ giống như C). Nếu bạn sử dụng filentpe indentation, tốt nhất là tắt smartindent (nếu không nó có thể can thiệp vào filentpe indentation, như di chuyển tất cả các dòng chú thích tới cột 0 trong các tệp python).
Cá nhân, tôi luôn tự động bật, sử dụng loại tệp khi có, và không bao giờ sử dụng smartindent. Vimrc của tôi bao gồm:
set autoindent " doesn't interfere with filetype indents, and is useful for text
if has("autocmd")
" Enable file type detection and indentation
filetype plugin indent on
set nosmartindent
endif
Tôi tưởng tượng có một cái gì đó bạn có thể làm để có smartindent bật chỉ khi filetype thụt không tồn tại cho một filetype, nếu bạn đang chỉnh sửa mà nhiều ngôn ngữ C-như khác nhau mà không filentpe indentation có sẵn.
Vì vậy, không có cách nào để thực hiện việc này trong chế độ chèn? Tôi đoán tôi nên quen với việc trao đổi giữa hai người. – Reid
Tôi không nghĩ có cách nào; Tôi không sử dụng chuyển động của con trỏ ở chế độ chèn. Bài viết này có thể hữu ích: http://www.viemu.com/a-why-vi-vim.html –
@Reid - Bạn có thể lập bản đồ theo cách này hay cách khác (xem bên dưới) - nhưng tất cả chuyển động thực sự nên được thực hiện ở chế độ N, không phải I. – Rook