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

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'

관련 정보