ATTENTION: There was a breaking change in version v0.5.0. The keybinding
gxmust now be configured manually. See Installation
- open links without
netrw - normal and visual mode support
- links with/without an explicit protocol (e.g.
google.comwill openhttps://google.com) - open plugins in the browser with a single command (e.g. in lazy, packer you can hover over a plugin name, simply press
gxor execute commandBrowseand you get to the github page of the plugin) - open github issues directly in the browser (e.g.
Fixes #22openshttps://github.com/chrishrb/gx.nvim/issues/22) - dependencies from
package.json(e.g. line"express": "^4.18.2",in thepackage.jsonopenshttps://www.npmjs.com/package/express) - formulae and casks from
Brewfile(e.g. linebrew "neovim"in theBrewfileopenshttps://formulae.brew.sh/formula/neovim) - if there is no url found under the cursor, the word/selection is automatically searched on the web
- supports user defined handlers to extend the functionality
- support for macOS, Linux and Windows
- more to come (jira issues, ..)
- Neovim >= 0.5.0
- macOS (
open), Linux (xdg-open) or Windows (powershell.exe start explorer.exe)
require("lazy").setup({
{
"chrishrb/gx.nvim",
keys = { { "gx", "<cmd>Browse<cr>", mode = { "n", "x" } } },
cmd = { "Browse" },
init = function ()
vim.g.netrw_nogx = 1 -- disable netrw gx
end,
dependencies = { "nvim-lua/plenary.nvim" },
config = true, -- default settings
submodules = false, -- not needed, submodules are required only for tests
-- you can specify also another config if you want
config = function() require("gx").setup {
open_browser_app = "os_specific", -- specify your browser app; default for macOS is "open", Linux "xdg-open" and Windows "powershell.exe"
open_browser_args = { "--background" }, -- specify any arguments, such as --background for macOS' "open".
handlers = {
plugin = true, -- open plugin links in lua (e.g. packer, lazy, ..)
github = true, -- open github issues
brewfile = true, -- open Homebrew formulaes and casks
package_json = true, -- open dependencies from package.json
search = true, -- search the web/selection on the web if nothing else is found
jira = { -- custom handler to open Jira tickets (these have higher precedence than builtin handlers)
handle = function(mode, line, _)
local ticket = require("gx.helper").find(line, mode, "(%u+-%d+)")
if ticket and #ticket < 20 then
return "http://jira.company.com/browse/" .. ticket
end
end,
},
},
},
handler_options = {
search_engine = "google", -- you can select between google, bing, duckduckgo, and ecosia
search_engine = "https://search.brave.com/search?q=", -- or you can pass in a custom search engine
},
} end,
},
})Browse <URL or WORDS>, e.g.Browse http://google.de,Browse example- OR hover/select words, links and more and execute command
Browse
When your cursor is over a link or you mark a link or part of a link with the visual mode, you can press gx to open the link in the browser.
- lua functions library plenary.nvim