Vim config của tôi bao gồm các plugin mà cố gắng để xử lý dự án hiện tại, xây dựng thẻ, vv . Điều này khá hữu ích cho việc lập trình hàng ngày của tôi trong Vim, nhưng thật khó chịu khi tôi sử dụng Vim cho một số chỉnh sửa nhanh, như:
- chỉnh sửa tin nhắn cam kết git;
- chỉnh sửa lệnh shell khi tôi gõ Ctrl+xCtrl+ezsh hoặc bash;
- Vân vân.
Tôi cũng không thích --noplugins
, vì tôi vẫn muốn tận dụng một số plugin trong chế độ chỉnh sửa nhanh, chẳng hạn như vòm, dễ chuyển động và nhiều plugin khác.
Vì vậy, tôi muốn có một số "chế độ ánh sáng" (hoặc "chế độ nhanh"), trong đó một số plugin sẽ bị bỏ qua, nhưng không phải tất cả chúng.
Ý tưởng đầu tiên của tôi là có một số đối số dòng lệnh đặc biệt, mà tôi đã phân tích bằng vimscript, nhưng việc nhanh chóng cho thấy rằng hiện tại không thể có trong vimscript (nhân tiện, thật đáng buồn).
Ý tưởng thứ hai của tôi là đặt một số biến môi trường khi chạy vim, như thế này:
$ VIM_LIGHT_MODE=1 vim
Điều này hoạt động trong git:
$ git config --global core.editor 'VIM_LIGHT_MODE=1 vim'
Nhưng nếu tôi làm EDITOR='VIM_LIGHT_MODE=1 vim'
và gõ Ctrl+xCtrl+evào vỏ, nó không hoạt động:
edit-command-line:13: command not found: VIM_LIGHT_MODE=1
Sau đó, tôi đã thử điều này : EDITOR="bash -c 'VIM_LIGHT_MODE=1 vim'"
, nhưng nó cũng thất bại:
vim': -c: line 1: syntax error: unexpected end of file
(Thành thật mà nói, cái này trông đặc biệt kỳ lạ, có vẻ như tôi hiểu sai về cách $EDITOR
sử dụng chính xác , và tôi sẽ rất vui nếu ai đó giải thích những gì đang diễn ra ở đây)
Tất cả các thí nghiệm khác cũng thất bại.
Cách hack duy nhất tôi có thể nghĩ đến là thiết lập một số servername
, như:
$ vim --servername VIM_LIGHTWEIGHT_MODE
Và sau đó kiểm tra v:servername
trong vimscript, nhưng đây là một hack hoàn toàn : đây hoàn toàn không phải là tên máy chủ.
Vì vậy, có một cách sạch hơn để đạt được những gì tôi muốn?
vim
như vim -u .vimrc-light
.
env
, shell-fu của tôi vẫn còn quá yếu. Hãy xem xét viết nó như một câu trả lời, để tôi có thể chấp nhận nó.
env
:EDITOR='env VIM_LIGHT_MODE=1 vim'
.