我在vimrc配置文件中设置了php命令行模式。
nmap <F5> :!php %
它在PHP命令行模式下按F5键时运行当前的php文件。
现在我想在firefox浏览器中运行当前的php文件,如何映射F6来完成工作?
nnoremap <F6>f :exe ':silent !firefox "http://127.0.0.1/". "%"'<CR>
按F6键时无法运行。
想想扎克 该命令已更改为 nnoremap f:silent!firefox&#34; http://127.0.0.1/%&#34;
文件test.php
是在vim中编辑的,我的文档根目录是/var/www
,
什么时候按F6和f,firefox打开。
http://127.0.0.1//var/www/test.php
找不到
在此服务器上找不到请求的网址/var/www/test_equal.php。 Apache / 2.2.22(Debian)服务器在127.0.0.1端口80
现在的问题是如何修复&#34; http://127.0.0.1/%&#34; ,改变
http://127.0.0.1//var/www/test.php into http://127.0.0.1/test.php
此处当前文件为/var/www/test.php(%)。
为什么我的命令无法运行?
nnoremap <F6>f :silent !firefox -new-window "http://127.0.0.1/"{expand('%:t')}
答案 0 :(得分:1)
修改:当您不在该目录中时,有时会在vim中创建文件(例如vim /path/to/newfile.php
而不是vim newfile.php
该目录)可能会更改%
的值。在这种情况下,只需使用%:t
抓住尾巴。所以试试这个:
nnoremap <silent> <F6>f :!firefox 'http://127.0.0.1/%:t' &<CR>
TL; DR:在Mac上,这样的事情应该有效:
nnoremap <F6>f :silent !/Applications/Firefox.app/Contents/MacOS/firefox -new-window "http://127.0.0.1/<C-R>%" &<CR>
在Linux或Windows上,只需根据需要替换Firefox的路径。
如果您获得http://127.0.0.1//var/www/test.php
而不是http://127.0.0.1/test.php
,那么您只需要文件名,而不是路径。尝试使用<C-R>%
而不是这样(我直接指的是我的firefox安装路径):
nnoremap <F6>f :silent !/Applications/Firefox.app/Contents/MacOS/firefox -new-window "http://127.0.0.1/<C-R>%" &
如果已设置firefox
命令,则按原样继续并使用:
nnoremap <F6>f :silent !firefox "http://127.0.0.1/<C-R>%"
当然,这假设您的firefox
命令已正确设置。
此外,确保您的文件以文件名保存,否则使用%
无法正常工作。
对于某些人来说,使用:silent
仍然会将Hit Enter调到contine提示符。如果发生这种情况,请尝试在最后添加&
。 E.g:
nnoremap <F6>f :silent !/Applications/Firefox.app/Contents/MacOS/firefox -new-window "http://127.0.0.1/<C-R>%" &
无论哪种方式,这仍然会要求您在最后按Enter键。如果这不是你想要的,那么最后也要添加<CR>
或<ENTER>
。像这样:
nnoremap <F6>f :silent !/Applications/Firefox.app/Contents/MacOS/firefox -new-window "http://127.0.0.1/<C-R>%" &<CR>
编辑:似乎有一个相当烦人的问题,如果你在Vim中使用这个键绑定已经运行的firefox进程你得到一个错误,说只有一个版本的Firefox可以运行任何一次。无论您是否使用-new-window
,-new-tab
或两者都使用,都会发生这种情况。似乎an old bug about this was reported back in 2010但我还没有找到更新的东西。我会看看我是否可以找到一个解决方案,而不仅仅是杀死Firefox,如果它已经在运行(这将是令人讨厌的)。