分页: 1 / 1

如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 14:27
sarrow
应用程序,注册了mime到gnome下面;这样nautilus就可以使用特定的程序,打开特定mime类型的文件。

用vim模拟这个的话应该怎么操作?

比如,在windows下面,使用RunDll32.exe shell32.dll,ShellExec_RunDLL {文件名},即可用默认的打开方式打开各种文件。

ubuntu下面,应该怎么操作?

能否利用系统已经注册好了的mime类型?还是得自己建立一个mime与程序间的数据库?

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 14:38
fanhe
你想要 vim 模拟什么东西?

你到底想问什么?

vim 跟 nautilus 能比么? 一个编辑器一个是文件管理器

还是你指把 vim 当文件管理器的时候模拟 nautilus 的双击打开?

实在不知道你想问什么, lx 解答

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 14:53
rykka

代码: 全选

!gnome-open "%:p"
不过我现在在arch下的gvim里没反应。

windows下可用 start

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 17:37
sarrow
fanhe 写了:你想要 vim 模拟什么东西?

你到底想问什么?

vim 跟 nautilus 能比么? 一个编辑器一个是文件管理器

还是你指把 vim 当文件管理器的时候模拟 nautilus 的双击打开?

实在不知道你想问什么, lx 解答
windows 下面,利用我提供的那个命令,可以在cmd下面打开任何,已经在系统里面注册过的类型的文件。

我想知道,ubuntu下面,有没有类似的通吃的指令?可以直接在gnome-terminal下面工作的指令?

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 17:38
sarrow
en,多谢3楼的。可用。

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 17:40
sarrow
rykka 写了:

代码: 全选

!gnome-open "%:p"
不过我现在在arch下的gvim里没反应。

windows下可用 start
你的在后面加一个&。表示另起炉灶。

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 18:33
rykka
这样啊,加 & 确实可用。

可在vim中不加也能运行啊
而以前我在ubuntu下的gvim也是不加的
:em23

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 18:42
Fermat618
[bash]
man xdg-open
[/bash]

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 19:27
sarrow
多谢8楼的好心人。

*unix下的工具太多了,没人指点,还真像无头苍蝇一样。

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-27 23:44
xvii
在我的_vimrc里有这样一段:

代码: 全选

"" Open URL in browser {{{
function! Browser ()
	let line = getline (".")
	let line = matchstr (line, "http[^'   ]*")
	silent exec "!E:\\Software\\FirefoxPortable\\FirefoxPortable.exe ".line
endfunction
" }}}

"" Open Url on this line with the browser \w {{{
map <Leader>url :call Browser ()<CR>
" }}}
还有这样一段:

代码: 全选

"" Online Documentation {{{
function! OnlineDoc()
	" let s:browser = "swiftfox"
	let s:browser = "E:\\Software\\FirefoxPortable\\FirefoxPortable.exe"
	let s:wordUnderCursor = expand("<cword>")
	if &ft == "cpp" || &ft == "c"
		let s:url = "http://www.google.com/codesearch?q=".s:wordUnderCursor."+lang:".&ft
	elseif &ft == "vim"
		let s:url = "http://www.google.com/codesearch?q=".s:wordUnderCursor
	else
		return
	endif
	let s:cmd = "silent !" . s:browser . " " . s:url  "&"
	execute  s:cmd
	redraw!
endfunction
" let maplocalleader=',' " all my macros start with
" online doc search
" map <LocalLeader>k :call OnlineDoc()<CR>
map <leader>k :call OnlineDoc()<CR>
" }}}

Re: 如何根据文件类型,选择程序打开文件

发表于 : 2011-11-28 0:47
sarrow
多谢10楼的朋友,我根据你的脚本,把两个函数做了一个合并——这样,只用记住一个快捷键。

其中,至于真正的工作函数:
system#WinExp_{MySys()}(url)
按系统的不同(windows和linux),分为两个实例(system#WinExp_linux/system#WinExp_windows),分别呼叫合适的程序。

代码: 全选

" Sarrow: 2011-11-28
nnoremap <leader>www :call system#OnlineDoc()<CR>

" Sarrow: 2011-11-28
" inspired by
" http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=355303
function! system#OnlineDoc() " open Online Documentation or search in google
   let wordUnderCursor = expand("<cword>")
   if wordUnderCursor =~ '\<https\?\>'
       let url = matchstr (getline("."), 'https\?[^''"\s]*')
   else
       if &ft == "cpp" || &ft == "c"
	   let url = "http://www.google.com/codesearch?q=" . wordUnderCursor . "+lang:" . &ft
       elseif &ft == "vim"
	   let url = "http://www.google.com/codesearch?q=" . wordUnderCursor
       else
	   let url = 'http://www.google.com/search?q=' . wordUnderCursor . '&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest'
       endif
   endif
   call system#WinExp_{MySys()}(url)
endfunction
" End: 2011-11-28