Làm cách nào để ánh xạ Enter để tùy chỉnh lệnh EXCEPT trong bản sửa lỗi nhanh?


9

Tôi đã ánh xạ lại <cr>(enter) để zatôi có thể nhanh chóng mở / đóng các nếp gấp.

Tuy nhiên, bây giờ khi tôi sử dụng cửa sổ quickfix và nhấn enter, nó không còn nhảy đến dòng có lỗi (vì nó đang cố mở / đóng một nếp gấp không tồn tại trong cửa sổ sửa lỗi nhanh).

Có cách nào để vô hiệu hóa ánh xạ của tôi hoặc đặt lại cục bộ khi vào cửa sổ quickfix không?

Câu trả lời:


13

Sử dụng ánh xạ biểu thức là cách dễ nhất để làm điều này:

nnoremap <expr> <CR> &buftype ==# 'quickfix' ? "\<CR>" : 'za'

Điều này xác định ánh xạ kiểm tra xem bạn đang ở trong cửa sổ quickfix, và sau đó thực hiện một <CR>hoặc zatheo đó.

Xem:

  • :h :map-expr
  • :h 'buftype'
  • :h expr1
  • :h string

Ánh xạ tới hàm

Bạn cũng có thể xác định một hàm thực hiện nhập thông thường khi được gọi từ cửa sổ quickfix và 'za' nếu không. Điều này không hiệu quả cho những gì bạn đang cố gắng thực hiện, nhưng tôi sẽ để nó ở đây vì đó là thông tin hữu ích nếu bạn muốn ánh xạ tới thứ gì đó phức tạp hơn lệnh chế độ thông thường:

function! FoldingEnter()
  if &buftype ==# 'quickfix'
    execute "normal! \<CR>"
  else
    normal! za
  endif
endfunction

nnoremap <CR> :call FoldingEnter()<CR>

Tôi có thể hỏi tại sao chúng ta phải sử dụng \<trong "<CR>" here?
voldikss

2
@Voldikss Chúng tôi muốn chuỗi chứa một ký tự trả về vận chuyển. Có hai cách để đạt được điều này: chúng ta có thể nhấn <C-V><C-M>để nhập trở lại vận chuyển theo nghĩa đen, nhưng nó sẽ hiển thị ^Mvà không thể dễ dàng sao chép / dán bên ngoài Vim hoặc chúng ta có thể sử dụng ký hiệu liên tục chuỗi của Vim. (Xem :help expr-string.) Nếu chúng tôi không bao gồm dấu gạch chéo ngược "<CR>"thì chuỗi thay vào đó sẽ chứa chuỗi bốn ký tự: ít hơn, chữ hoa C, chữ hoa R, lớn hơn.
Giàu

1
Cảm ơn người đàn ông, tôi hiểu nó bây giờ. :help expr-stringlà quan trọng
voldikss
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.