Làm cách nào để tạo các lệnh tô sáng trong .vimrc có hiệu lực ngay lập tức với Vim 7.4?


9

Tôi có một số highlightlệnh trong .vimrctập tin của tôi . Trong Vim 7.3, những thứ này có hiệu lực ngay sau khi Vim bắt đầu. Sau khi cập nhật lên Vim 7.4, đây không còn là trường hợp nữa. Vim sử dụng đánh dấu mặc định ban đầu của nó. Khi tôi tải .vimrclần thứ hai bằng cách thực thi source ~/.vimrc, tô sáng hoạt động như tôi muốn.

Bạn sẽ có thể tái tạo vấn đề này bằng các bước sau:

  1. Tạo một bản sao của .vimrctập tin của bạn .

  2. Thay thế ~/.vimrcbằng một tập tin chỉ chứa dòng highlight Type ctermfg=28 cterm=bold.

  3. Chạy vim dummy.ctrong một thiết bị đầu cuối 256 màu (ví dụ: Thiết bị đầu cuối Gnome).

  4. intvào bộ đệm. Các intsẽ xuất hiện trong phông chữ thường và có màu xanh nhạt, mà không phải là những gì tôi muốn.

  5. Nhập :source ~/.vimrc. Bây giờ intnên xuất hiện trong phông chữ đậm và được tô màu xanh đậm.

Theo bài viết Cách kiểm soát / cấu hình màu vim , chỉ cần đặt các highlightlệnh vào là được .vimrc. Bài báo nói rằng bạn nên đặt syntax enablesau các highlightlệnh, nhưng điều này không tạo ra sự khác biệt nào.

Sửa chữa đầu tiên của tôi là để thêm vào trước mỗi highlightlệnh trong .vimrcvới autocmd VimEnter *. Điều này làm việc cho một số loại tệp, nhưng không phải cho các loại khác (tệp C là một ví dụ).

Lý do cho hành vi này là gì? Làm cách nào để các highlightlệnh được thực thi khi Vim được khởi động sao cho chúng có hiệu lực cho tất cả các bộ đệm trong toàn bộ phiên Vim?


Nghe có vẻ như vấn đề 542
Christian Brabandt

Có, khi thêm set compatiblevào lúc bắt đầu .vimrc, tô sáng cú pháp hoạt động như mong đợi. Vì vậy, đây thực sự có vẻ là lỗi này trong hành động.
Wolfgang Jeltsch

Tôi đã đi trước các highlightlệnh với autocmd ColorScheme *, được đề xuất như một cách giải quyết trong báo cáo lỗi. Nó vẫn không hoạt động. ☹
Wolfgang Jeltsch

Bây giờ tôi đang viết sơ đồ màu của riêng tôi, dường như cũng hoạt động xung quanh lỗi này.
Wolfgang Jeltsch

Christian, bạn có thể viết bình luận của bạn như một câu trả lời không? Rốt cuộc, đây là câu trả lời đúng cho vấn đề của tôi. Hoặc có cách tiếp cận nào khác để xử lý các câu hỏi thực sự tiết lộ lỗi không?
Wolfgang Jeltsch

Câu trả lời:


5

Đây không phải là câu trả lời chắc chắn và vấn đề của bạn có vẻ giống như vấn đề 542 . Rõ ràng bạn có thể làm việc xung quanh nó, bằng cách viết các bảng màu cơ bản của riêng bạn, thay vì viết các hi ...câu lệnh đó trực tiếp vào .vimrc của bạn.


Tôi nghĩ rằng đó là vì vấn đề Vim này; vì vậy phản hồi của bạn thực sự có vẻ là câu trả lời chính xác cho vấn đề của tôi.
Wolfgang Jeltsch

3

Trên thực tế, bạn không nên đặt các điểm nổi bật tùy chỉnh trong vimrc của mình nhưng trong các tệp cú pháp hải quan.

Những tập tin này nên được đặt ở ~/.vim/after/syntax/filetype.vimnơi filetypefiletype dự kiến. Nếu bạn hài lòng với một tệp cú pháp nhưng muốn thêm một vài lệnh, bạn có thể làm theo các bước sau (lấy từ :h mysyntaxfile-add):

  1. Tạo một thư mục trong đó gọi là "after / cú pháp". Dành cho Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Viết một kịch bản Vim có chứa các lệnh bạn muốn sử dụng. Ví dụ: để thay đổi màu cho cú pháp C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Viết tập tin đó trong thư mục "after / cú pháp". Sử dụng tên của cú pháp, với ".vim" được thêm vào. Đối với cú pháp C của chúng tôi:

    :w ~/.vim/after/syntax/c.vim
    

Đó là nó. Lần sau khi bạn chỉnh sửa tệp C, màu Nhận xét sẽ khác. Bạn thậm chí không phải khởi động lại Vim.

:h mysyntaxfilelà một nơi tốt để có được thông tin về cách chỉnh sửa các tệp cú pháp của riêng bạn. Cũng tìm hiểu Vimscript The Hard Way như một số chương về chủ đề này.


2
Điều gì xảy ra nếu tôi muốn thay đổi tô sáng cho tất cả các loại tệp. Ví dụ, tôi muốn màu của các bình luận là màu xanh đậm, bất kể loại tệp là gì.
Wolfgang Jeltsch

Tôi đã thử ít nhiều cách tiếp cận mà bạn đề xuất. Tôi đã thêm một tệp .vimrc/highlighting.vim, tạo một thư mục .vimrc/syntax/aftervà thêm một số liên kết tượng trưng của biểu mẫu * filetype * .vimtrỏ đến .vimrc/highlighting.vimthư mục này. Cú pháp tô sáng vẫn không hoạt động.
Wolfgang Jeltsch

@WolfgangJeltsch Yup như bài viết của tôi và doc nói thư mục nên ~/.vim/after/syntaxkhông~/.vimrc
statox

Đúng rồi. Tuy nhiên, đây chỉ là một lỗi đánh máy trong nhận xét của tôi. Trên thực tế, tôi đã làm việc trong thư mục .vimvà tô sáng cú pháp không hoạt động, có thể là do lỗi này 542.
Wolfgang Jeltsch

không không làm việc.
Yar

1

Đối với những gì nó có giá trị, tôi đã có vấn đề này với MacVim (8.1.950 (155)). Đặt câu lệnh tô sáng sau colorscheme.vimrc đã sửa nó cho tôi. Ví dụ:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.