ярлык энергии для открытия файла под курсором в уже открытом окне

Выполните разрушительное badblocks-w сканирование на рассматриваемом разделе. Это перезаписывает все с различными комбинациями двоичных разрядов несколько раз.

12
03.05.2013, 17:37
5 ответов

Я собрал все части для добиваний цели. Лучший способ состоит в том, чтобы создать пользовательское отображение для всех команд:

 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 изменяет фокус на предыдущее окно (куда мы на самом деле произошли из),
10
27.01.2020, 19:56

Это не может быть сделано легко. A [count] прежде <C-w>f указывает который соответствие файла на 'path' открыт, это не выбирает существующее окно. Только для <C-w>w команда, [count] означает, "переходят к существующему числу окна".

Для получения той функциональности необходимо записать пользовательское отображение который также

  • захватывает файл, переходит в [count] окно и эмулирует gf команда, или
  • клонирует текущий буфер к [count] окно, и выполняется gf там
1
27.01.2020, 19:56
  • 1
    Да единственный способ сделать это состоит в том, чтобы записать пользовательское отображение. Я просто испытывал некоторые затруднения захватить файл под курсором. Но я думаю, что понял это теперь –  psibar 03.05.2013, 17:13

Мне помогло:

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

nmap,f :call OpenFileInPrevWindow()<CR>
2
27.01.2020, 19:56

Я искал ту же функцию VIm и нашел это решение, которое прекрасно работает:

map <F8> :vertical wincmd f<CR>

Исходная страница .

3
27.01.2020, 19:56

Меня достаточно раздражали приведенные выше ответы от 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'
1
24.08.2021, 01:51

Теги

Похожие вопросы