phím tắt vim để mở tệp theo con trỏ trong cửa sổ đã mở


12

Trong vim bạn có thể mở một tệp dưới con trỏ bằng cách sử dụng gflệnh.

Người ta cũng có thể dễ dàng mở tệp đó trong một cửa sổ phân chia mới bằng cách nhấn <c-w> f. Đây là một tính năng thực sự tốt đẹp và tiết kiệm thời gian.

Tuy nhiên, tôi không thể tìm ra cách mở tệp trong cửa sổ chia đã mở (mà không tạo tệp mới).


1
Bạn có thể muốn xem qua previewtính năng này (xem :h preview).
Stéphane Chazelas

Phải, tôi sử dụng xem trước là tốt. Tuy nhiên tôi không muốn mở tệp trong cửa sổ xem trước nhưng rõ ràng là ở một tệp khác.
psibar

Câu trả lời:


10

Tôi có tất cả các mảnh với nhau để thực hiện các mẹo. Cách tốt nhất là tạo ánh xạ tùy chỉnh cho tất cả các lệnh:

 map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p

Giải trình:

  • map <F8> ánh xạ trên "F8" các lệnh theo sau
  • let mycurf=expand("<cfile>") lấy tên tệp dưới con trỏ và lưu nó vào mycurf
  • <c-w>w thay đổi trọng tâm sang cửa sổ chia mở tiếp theo
  • execute("e ".mycurf) mở tập tin đã lưu trong mycurf
  • cuối cùng <c-w>pthay đổi tiêu điểm sang cửa sổ trước (nơi chúng tôi thực sự đến từ)

1

Điều đó không thể được thực hiện dễ dàng. Một [count]trước khi <C-w>fquy định cụ thể mà tập trận trên 'path'được mở ra, nó không chọn một cửa sổ hiện tại. Chỉ cho <C-w>wlệnh, [count]có nghĩa là "đi đến số cửa sổ hiện có".

Để có được chức năng đó, bạn cần phải viết một ánh xạ tùy chỉnh

  • Lấy tập tin, đi đến [count]cửa sổ và mô phỏng gflệnh, hoặc
  • Nhân bản bộ đệm hiện tại vào [count]cửa sổ và thực thi gfở đó

Có, cách duy nhất để làm điều đó là viết một ánh xạ tùy chỉnh. Tôi chỉ gặp một số rắc rối với việc lấy tập tin dưới con trỏ. Nhưng tôi nghĩ rằng tôi đã tìm ra nó bây giờ
psibar

1

Tôi đã tìm kiếm chức năng tương tự của VIm và tìm ra giải pháp này hoạt động như bùa mê:

map <F8> :vertical wincmd f<CR>

Trang nguồn .


0

Điều này làm việc cho tôi:

function! OpenFileInPrevWindow()
    let cfile = expand("<cfile>")
    wincmd p
    execute "edit " . cfile
endfunction

nmap ,f :call OpenFileInPrevWindow()<CR>
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.