vim에서는 할 수 있습니다 커서 아래에 있는 파일을 엽니다명령 을 사용하여 gf
.
를 눌러 새 분할 창에서 해당 파일을 쉽게 열 수도 있습니다 <c-w> f
. 이것은 정말 훌륭하고 시간을 절약해 주는 기능입니다.
그러나 이미 열린 분할 창에서 파일을 여는 방법을 알 수 없습니다(새 창을 만들지 않고).
답변1
트릭을 수행하기 위해 모든 조각을 모았습니다. 가장 좋은 방법은 모든 명령에 대한 사용자 정의 매핑을 만드는 것입니다.
map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p
설명:
map <F8>
"F8"에 따라오는 명령을 매핑합니다.let mycurf=expand("<cfile>")
커서 아래의 파일 이름을 가져와서 저장합니다.mycurf
<c-w>w
초점을 다음 열린 분할 창으로 변경합니다.execute("e ".mycurf)
에 저장된 파일을 엽니다.mycurf
- 마지막으로
<c-w>p
초점을 이전 창(실제로 왔던 곳)으로 변경합니다.
답변2
답변3
이것은 나에게 효과적이었습니다.
function! OpenFileInPrevWindow()
let cfile = expand("<cfile>")
wincmd p
execute "edit " . cfile
endfunction
nmap ,f :call OpenFileInPrevWindow()<CR>
답변4
2013년부터 위의 답변에 대해 충분히 짜증이 났습니다.그만두다내가 관심을 갖는 상황에서 안정적으로 작동하고 이를 처리하기 위해 약간 더 강력한 함수를 작성했습니다. 구체적 으로 gF
(예: "goto linenumber" 기능 포함) 예를 들면 다음과 같습니다.
function! gfriend#goto_cWORD(winmotion)
let cword = expand("<cWORD>")
let st = match(cword, '\v\f+:\d+')
let end = matchend(cword, '\v\f+:\d+')
if end !=# -1
let cword = cword[st:end - 1]
endif
let bits = split(cword, ':')
let starting_window = nvim_win_get_number(0)
" If there's no previous window, create a new one
wincmd p
if nvim_win_get_number(0) ==# starting_window
execute(a:winmotion." ".bits[0])
else
execute("e ".bits[0])
endif
if bits[1]
execute(bits[1])
endif
endfunction
사용법은 다음과 같습니다.
nmap <silent> <Leader>gF \
:<C-u>call gfriend#goto_cWORD(winwidth(0) >=# 180 ? 'vsp' : 'sp')<CR>
나는 (작은) 것을 게시했습니다GitHub에, 원하는 경우 플러그인으로 설치할 수 있습니다.
Plug 'ELLIOTTCABLE/vim-gfriend'