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
(예: "줄 번호로 이동" 기능 포함) 예를 들면 다음과 같습니다.
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'