5

Я религиозно использую плагин NerdTree для MacVim и часто хочу открыть папку в Finder для работы с файлами. Примером может быть предварительный просмотр и копирование некоторых изображений.

Есть ли быстрый способ сделать это, не требующий изменения текущего каталога? Мой идеальный сценарий будет:

  • Переместить курсор в нужную папку
  • Нажмите "некоторую клавишу"
  • Папка открывается в видоискателе.

2 ответа2

2

Это доступно прямо из коробки с NERDTree сейчас как часть плагина fs_menu.vim . На самом деле, эта функция работает только на Mac:

if has("gui_mac") || has("gui_macvim") || has("mac")
    call NERDTreeAddMenuItem({'text': '(r)eveal in Finder the current node', 'shortcut': 'r', 'callback': 'NERDTreeRevealInFinder'})
    call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFile'})
    call NERDTreeAddMenuItem({'text': '(q)uicklook the current node', 'shortcut': 'q', 'callback': 'NERDTreeQuickLook'})
endif

Перейдите к узлу в представлении NERDTree, введите m чтобы вызвать меню fs, затем o чтобы открыть текущий узел. Каталоги будут открыты в новом окне Finder, файлы будут открыты в приложении, которое вы установили в качестве редактора по умолчанию для типа файла.

Это завершенные комплименты команды open :

function! NERDTreeExecuteFile()
    let treenode = g:NERDTreeFileNode.GetSelected()
    if treenode != {}
        call system("open '" . treenode.path.str() . "'")
    endif
endfunction
1

Команда оболочки для открытия папки

$ open /path/to/folder

В функции Vim эта команда может быть вызвана так:

let g:mypath = /path/to/folder
execute "silent !open " . g:mypath

Документация NERDTree содержит простой и понятный пример:

call NERDTreeAddKeyMap({
       \ 'key': 'foo',
       \ 'callback': 'NERDTreeCDHandler',
       \ 'quickhelpText': 'echo full path of current node',
       \ 'scope': 'DirNode' })

function! NERDTreeCDHandler(dirnode)
    call a:dirnode.changeToDir()
endfunction

что вы можете расширить с помощью глобальных объектов, перечисленных несколькими строками выше:

g:NERDTreePath
g:NERDTreeDirNode
g:NERDTreeFileNode
g:NERDTreeBookmark

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .