Làm cách nào tôi có thể kích hoạt autocmd Vim khi vào cửa sổ Netrw?


1

Tôi đang cố gắng để viết một cặp autocmd của Vim để chuyển đổi một tùy chọn bật / tắt khi vào / rời khỏi một cửa sổ trình duyệt Netrw (thông qua :Explore, :Vexplore, vv). Tôi mở một cửa sổ như vậy và chạy :echo bufname('%'), nó hiển thị NetrwTreeListing 1như tên của bộ đệm explorer. Vì vậy, tôi đã cố gắng viết autocommands của mình như vậy,

autocmd BufEnter NetrwTreeListing* highlight CursorLine gui=underline
autocmd BufLeave NetrwTreeListing* highlight clear CursorLine

nhưng họ không kích hoạt. Tôi đã thử thay thế NetrwTreeListing*bằng Netrw*, và BufEntervới WinEnternhưng không thể làm cho nó hoạt động. Tôi đang thiếu gì ở đây?

Chỉnh sửa : Có thể điều này có liên quan. Chạy :echo bufname('%')trả về NetrwTreeListing 1miễn là Netrw được thiết lập để duyệt trong một "cây" ( let g:netrw_liststyle=3). Nếu không, nó trả về đường dẫn đến thư mục hiện tại. Tuy nhiên, tôi đang cố gắng kích hoạt autocmd của mình với tùy chọn "cây", vì vậy có vẻ như nó sẽ hoạt động.

Chung kết : Cảm ơn garyjohn cho câu trả lời tuyệt vời. Nó kết hợp tốt với một bộ autocommands khác mà tôi đã gặp:

autocmd WinLeave * setlocal nocursorline
autocmd WinEnter,BufRead * setlocal cursorline

bạn ở vim hay gvim? gui chỉ có trong gvim
FDinoff

@FDinoff Tôi đang ở MacVim, vì vậy gvim.
ivan

Câu trả lời:


2

Chúng dường như hoạt động:

au FileType netrw hi CursorLine gui=underline
au FileType netrw au BufEnter <buffer> hi CursorLine gui=underline
au FileType netrw au BufLeave <buffer> hi clear CursorLine

Thật tuyệt vời! Tôi không nhận ra bạn có thể lồng autocommands như thế.
ivan
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.