В последнее время я активно использую Vim в качестве текстового редактора и плагин NERDTree для навигации по файловой системе.
И чего мне в нем очень не хватало, так это возможности запуска стандартного приложения-обработчика выбранного в дереве файла.
Немного поискав и не найдя, я решил написать свой плагин.
Идею реализации я увидел в netrw. Я не поддерживал Win, поэтому он работает только под *nix (gnome/kde).
Для установки нужно всё это дело записать в файл (например,execute_menuitem.vim), и положить в папку ~/.
vim/nerdtree_plugin. Кстати, там уже должен быть плагин fs_menu.vim, который необходим для работы моего плагина и включен в NERDTree по умолчанию.
Как это работает: выберите файл или папку в дереве, нажмите «m», чтобы открыть меню, и «x», чтобы запустить приложение обработки.
Все.
" ============================================================================
" File: execute_menuitem.vim
" Description: plugin for NERD Tree that provides an execute menu item, that
" executes system default application for file or directory
" ============================================================================
if exists("g:loaded_nerdtree_shell_exec_menuitem")
finish
endif
let g:loaded_nerdtree_shell_exec_menuitem = 1
let g:haskdeinit = system("ps -e") =~ 'kdeinit'
call NERDTreeAddMenuItem({
\ 'text': 'e(x)ecute',
\ 'shortcut': 'x',
\ 'callback': 'NERDTreeExecute' })
function! NERDTreeExecute()
let treenode = g:NERDTreeFileNode.GetSelected()
let path = treenode.path.str()
if has("unix") && executable("gnome-open") && !g:haskdeinit
exe "silent !gnome-open ".
shellescape(path,1).
" > /dev/null" let ret= v:shell_error elseif has("unix") && executable("kfmclient") && g:haskdeinit exec "silent !kfmclient exec ".
shellescape(path,1).
" > /dev/null"
let ret= v:shell_error
end
redraw!
endfunction
Теги: #vim #Чулан #nerdtree
-
Как Фотографии Людей Удваивают Конверсию
19 Oct, 24 -
Демо-Версии Невангеров Для Unigine И Godot
19 Oct, 24 -
Ит-Активы Под Постоянным Контролем
19 Oct, 24 -
Подключение Дисплея 1602 К Ардуино
19 Oct, 24