이미 열린 창에서 커서 아래에 파일을 여는 vim 단축키

이미 열린 창에서 커서 아래에 파일을 여는 vim 단축키

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

나는 동일한 VIm의 기능을 검색하고 매력처럼 작동하는 이 솔루션을 찾았습니다.

map <F8> :vertical wincmd f<CR>

소스 페이지.

답변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'

관련 정보