分页: 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
不过我现在在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 写了:
不过我现在在arch下的gvim里没反应。
windows下可用 start
你的在后面加一个&。表示另起炉灶。
Re: 如何根据文件类型,选择程序打开文件
发表于 : 2011-11-27 18:33
由 rykka
这样啊,加 & 确实可用。
可在vim中不加也能运行啊
而以前我在ubuntu下的gvim也是不加的

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