github github
stars 107
issues 6
subscribers 1
forks 10



last month


LeetBuddy.nvim enables seamless integration with Leetcode, empowering you to solve coding problems effortlessly within Neovim.




  • Neovim (v0.9.0 or higher)
  • plenary.nvim
  • telescope.nvim


Use your favorite plugin manager to install LeetBuddy.nvim. Here's an example using Lazy:

return {
  dependencies = {
  config = function()
  keys = {
    { "<leader>lq", "<cmd>LBQuestions<cr>", desc = "List Questions" },
    { "<leader>ll", "<cmd>LBQuestion<cr>", desc = "View Question" },
    { "<leader>lr", "<cmd>LBReset<cr>", desc = "Reset Code" },
    { "<leader>lt", "<cmd>LBTest<cr>", desc = "Run Code" },
    { "<leader>ls", "<cmd>LBSubmit<cr>", desc = "Submit Code" },


LeetBuddy.nvim provides the following commands:

  • LBQuestions: Lists all Leetcode problems with submission status and difficulty level. Additionally, there are custom filters available to further refine the displayed problems:
    • <A-r>: Reset all filters and display all problems.
    • <A-e>: Display only easy difficulty problems.
    • <A-m>: Display only medium difficulty problems.
    • <A-h>: Display only hard difficulty problems.
    • <A-a>: Display only problems with a status of "Accepted" (AC).
    • <A-y>: Display only problems with a status of "Not Started" (NOT_STARTED).
    • <A-t>: Display only problems with a status of "Tried" (TRIED).
  • LBQuestion: Displays the question in a popup window.
  • LBReset: Resets the code of the current question to the default template.
  • LBTest: Runs the test cases for the current question. Multiple test cases can be added.
  • LBSubmit: Submits the code for the current question.
  • LBChangeLanguage: Dynamically switch the language for the current problem.

Custom Configuration

LeetBuddy.nvim allows you to customize certain aspects of its behavior. You can modify the following configuration options in your Neovim configuration file to suit your preferences:

    domain = "com"  -- `cn` for chinese leetcode
    language = "py",
Short Name Language
cpp C++
java Java
py Python 3
c C
cs C#
js JavaScript
rb Ruby
swift Swift
go Go
scala Scala
kt Kotlin
rs Rust
php PHP
ts TypeScript
rkt Racket
erl Erlang
ex Elixir
dart Dart

Login to your account

To use LeetBuddy.nvim, you'll need to obtain the CSRF token and session from your Leetcode account. Please make sure to log in to your account before proceeding. Please note that due to the authentication system implemented by Leetcode, manual login credentials entry is not supported.



Contributions are welcome! If you have any bug reports, feature requests, or suggestions, please open an issue or submit a pull request. For major changes, please discuss them in the issue tracker before making any modifications.


This plugin is available under the MIT License. Feel free to use and modify it according to your needs.