nvim-ros2 is a simple lua plugin that adds useful features to enhance your development workflow while developing ROS 2 modules.
- Custom grammar with syntax highlights for ROS 2 interfaces following official conventions.
- After configuring the plugin, the grammar can be installed using
TSInstall ros2
.msgfile
.srvfile
.actionfile
- Telescope extension that adds pickers for ROS 2 components
- Configure
*.action,*.msg, and*.srvfiles asrosfiletype - Configure
*.launch,*.xacro, and*.urdffiles asxmlfiletype
return{"ErickKramer/nvim-ros2", dependencies={"nvim-lua/plenary.nvim", "nvim-telescope/telescope.nvim", "nvim-treesitter/nvim-treesitter", }, opts={-- picker = "telescope", -- Defaultautocmds=true, treesitter=true, }, keys={{"<leader>li", function() require("nvim-ros2").pickers.interfaces() end, desc="[ROS 2]: List interfaces" },{"<leader>ln", function() require("nvim-ros2").pickers.nodes() end, desc="[ROS 2]: List nodes" },{"<leader>la", function() require("nvim-ros2").pickers.actions() end, desc="[ROS 2]: List actions" },{"<leader>lt", function() require("nvim-ros2").pickers.topics_info() end, desc="[ROS 2]: List topics with info" },{"<leader>le", function() require("nvim-ros2").pickers.topics_echo() end, desc="[ROS 2]: List topics with echo" },{"<leader>ls", function() require("nvim-ros2").pickers.services() end, desc="[ROS 2]: List services" }, }, }return{"ErickKramer/nvim-ros2", dependencies={"folke/snacks.nvim", "nvim-treesitter/nvim-treesitter", }, opts={picker="snacks", autocmds=true, treesitter=true, }, keys={{"<leader>li", function() require("nvim-ros2").pickers.interfaces() end, desc="[ROS 2]: List interfaces" },{"<leader>ln", function() require("nvim-ros2").pickers.nodes() end, desc="[ROS 2]: List nodes" },{"<leader>la", function() require("nvim-ros2").pickers.actions() end, desc="[ROS 2]: List actions" },{"<leader>lt", function() require("nvim-ros2").pickers.topics_info() end, desc="[ROS 2]: List topics with info" },{"<leader>le", function() require("nvim-ros2").pickers.topics_echo() end, desc="[ROS 2]: List topics with echo" },{"<leader>ls", function() require("nvim-ros2").pickers.services() end, desc="[ROS 2]: List services" }, }, }return{"ErickKramer/nvim-ros2", dependencies={"ibhagwan/fzf-lua", "nvim-treesitter/nvim-treesitter", }, opts={picker="fzf", autocmds=true, treesitter=true, }, keys={{"<leader>li", function() require("nvim-ros2").pickers.interfaces() end, desc="[ROS 2]: List interfaces" },{"<leader>ln", function() require("nvim-ros2").pickers.nodes() end, desc="[ROS 2]: List nodes" },{"<leader>la", function() require("nvim-ros2").pickers.actions() end, desc="[ROS 2]: List actions" },{"<leader>lt", function() require("nvim-ros2").pickers.topics_info() end, desc="[ROS 2]: List topics with info" },{"<leader>le", function() require("nvim-ros2").pickers.topics_echo() end, desc="[ROS 2]: List topics with echo" },{"<leader>ls", function() require("nvim-ros2").pickers.services() end, desc="[ROS 2]: List services" }, }, }The functionalities here provided were validated using ROS 2 humble.








