VimのNERDTreeで選択したファイルのシステムアプリケーションハンドラーを呼び出す

最近、私は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








All Articles