Duplicate tip
This tip is very similar to the following:
These tips need to be merged – see the merge guidelines.
created 2004 · complexity basic · author Suresh Govindachar · version 6.0
The following mappings help to execute "things" in win98.
1) If you are editing a file (eg, html file) file and want to view it, the mapping \xf
will do it.
2) If you want to execute the string under the cursor (<cWORD>
):
The mapping \x
executes the <cWORD>
"as is", whereas the mapping \xl
executes it after pre-pending it with the full path to the current file.
Example for \xf
-- viewing an html file while editing it.
Example for \x
-- the string under the cursor can be a google search for the word mail on this web-site: http://www.google.com/search?q=mail+site:vim.sourceforge.net
(It can also be things such as the name of a file (foo.pdf, foo.bat) or directory etc.)
"The mappings: " eXecute File being edited nmap \xf :silent !start rundll32 url.dll,FileProtocolHandler %:p <CR> "eXecute string below cursor nmap \x :silent !start rundll32 url.dll,FileProtocolHandler <cWORD> <CR> " eXecute string below cursor after prepending it with path to file nmap \xl :silent !start rundll32 url.dll,FileProtocolHandler %:p:h/<cWORD> <CR>
References
Comments
Executing a directory works, but this is not a good usage of the mapping -- since it is better to edit a directory. See :help netrw-explore
Although the example given above about searching this web-site for "mail" does work with \x, there is a bug in rundll32 that prevents \x from working on url's that end with an actual file -- see VimTip394:
nmap \e :silent !start "c:\program files\internet explorer\iexplore.exe" -nohome <cWORD> <CR>
Because sometimes URLs can be within a pair of brackets or <>, I'm using the following mappings:
nnoremap <silent> <C-L>e \ :exe ':!start cygstart '. \ matchstr(expand('<cWORD>'), \ '\%(.\{-}\zs\%(news:\\|mailto:\\|ftp://\\|https\=://\)\)\=[^:;,<>]\+' \ )<CR> vnoremap <silent> <C-L>e \ <C-\><C-N>:let w:a_save=@a<CR>gv"ay \ :exe ':!start cygstart '.@a<CR>:let @a=w:a_save<CR>:unlet w:a_save<CR>
Note as filenames may contains spaces, I haven't tried to support file:///
See also script#293, which does similar things (not only for Windows).