Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -272,14 +272,21 @@ install_oh_my_zsh() {

install_cli_tools() {
print_section "${PACKAGE} Installing CLI Tools"

local tools=("fzf:FZF (Terminal fuzzy finder)" "ripgrep:ripgrep (Fast search tool)" "bat:bat (Enhanced cat with syntax highlighting)")

local tools=(
"fzf:FZF (Terminal fuzzy finder)"
"ripgrep:ripgrep (Fast search tool)"
"bat:bat (Enhanced cat with syntax highlighting)"
"scooter:scooter (Interactive search and replace in the terminal)"
)
for tool_info in "${tools[@]}"; do
IFS=':' read -r tool_name tool_desc <<< "$tool_info"
install_with_brew "$tool_name" "$tool_desc"
done

local scooter_config_target="$HOME/.config/scooter/config.toml"
mkdir -p "$(dirname "$scooter_config_target")"
create_symlink "$(pwd)/scooter.config.toml" "$HOME/.config/scooter/config.toml" "Scooter config"

echo ""
print_success "All CLI tools installed successfully!"
}
Expand Down
41 changes: 21 additions & 20 deletions nvim/lazy-lock.json
Original file line number Diff line number Diff line change
@@ -1,61 +1,62 @@
{
"CopilotChat.nvim": { "branch": "main", "commit": "2f3e07398ba81ccc0cf3d1fca9805aaca126264e" },
"CopilotChat.nvim": { "branch": "main", "commit": "1e06be97df058fa0bb4af54659c39918a4999c86" },
"ReplaceWithRegister": { "branch": "master", "commit": "832efc23111d19591d495dc72286de2fb0b09345" },
"avante.nvim": { "branch": "main", "commit": "44db8eba870f6c123da5efa70384b2889f3e3495" },
"avante.nvim": { "branch": "main", "commit": "5e4bb50ddaa8c4688675df6f437712c0e793a51c" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "5af9374957a65be8770696da295dc9016b96f241" },
"catppuccin": { "branch": "main", "commit": "c89184526212e04feffbddda9d06b041a8fca416" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"conform.nvim": { "branch": "master", "commit": "3bad87250ed85246fe8c5bc10005ab5a6289ae4c" },
"copilot.lua": { "branch": "master", "commit": "36c220b816d07989186731ca771c15e2df419d68" },
"conform.nvim": { "branch": "master", "commit": "9d859cbfbde7a1bd1770e7c97aef30ec5a237a71" },
"copilot.lua": { "branch": "master", "commit": "3cd5086c28c5769f5db147721f457a3e081de254" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"emmet-vim": { "branch": "master", "commit": "e98397144982d1e75b20d94d55a82de3ec8f648d" },
"gitsigns.nvim": { "branch": "main", "commit": "23ae90a2a52fdc9b8c50dc61d6c30ebb18521343" },
"gitsigns.nvim": { "branch": "main", "commit": "1ee5c1fd068c81f9dd06483e639c2aa4587dc197" },
"glance.nvim": { "branch": "master", "commit": "bf86d8b79dce808e65fdb6e9269d0b4ed6d2eefc" },
"grug-far.nvim": { "branch": "main", "commit": "50d9ee2b5a19634670441948e7e4afaa042f1059" },
"grug-far.nvim": { "branch": "main", "commit": "48f9afb684de1c191af7bed96bc1db85ba33f6a4" },
"gruvbox.nvim": { "branch": "main", "commit": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437" },
"img-clip.nvim": { "branch": "main", "commit": "f33f3af9ba50f99d70f8fcb1a8575750ada4ea4a" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazy.nvim": { "branch": "main", "commit": "59334064f8604ca073791c25dcc5c9698865406e" },
"lazydev.nvim": { "branch": "main", "commit": "258d2a5ef4a3e3d6d9ba9da72c9725c53e9afcbd" },
"lazygit.nvim": { "branch": "main", "commit": "2305deed25bc61b866d5d39189e9105a45cf1cfb" },
"lsp-lens.nvim": { "branch": "main", "commit": "48bb1a7e271424c15f3d588d54adc9b7c319d977" },
"lspkind.nvim": { "branch": "master", "commit": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3" },
"lspsaga.nvim": { "branch": "main", "commit": "8efe00d6aed9db6449969f889170f1a7e43101a1" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "f760507df8c49a4bf46a4d12e1fc616797508979" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "155eac5d8609a2f110041f8ac3491664cc126354" },
"mason-null-ls.nvim": { "branch": "main", "commit": "de19726de7260c68d94691afb057fa73d3cc53e7" },
"mason.nvim": { "branch": "main", "commit": "b3689a41dd77e5294498dba9757fb22cc80cbebd" },
"mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" },
"mcphub.nvim": { "branch": "main", "commit": "8ff40b5edc649959bb7e89d25ae18e055554859a" },
"mini.nvim": { "branch": "main", "commit": "228a8c34fae1d778e895ad06e4158f65e85828bc" },
"mini.nvim": { "branch": "main", "commit": "79654ef28182986dcdd9e2d3506d1728fc7c4f79" },
"neovim-ayu": { "branch": "master", "commit": "cc78e880cce5dfc1187d144ed7251c746feff259" },
"nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" },
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
"none-ls.nvim": { "branch": "main", "commit": "88e2508bd1754e2643e54e9f181e64bbda118ab9" },
"none-ls.nvim": { "branch": "main", "commit": "5cf63841461b49989972d35bf886e076a1ab3649" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-dap": { "branch": "master", "commit": "7367cec8e8f7a0b1e4566af9a7ef5959d11206a7" },
"nvim-dap": { "branch": "master", "commit": "48570d8372f63c9e9ba399a16606f9553034a9b2" },
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
"nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" },
"nvim-lspconfig": { "branch": "master", "commit": "336b388c272555d2ae94627a50df4c2f89a5e257" },
"nvim-lspconfig": { "branch": "master", "commit": "e688b486fe9291f151eae7e5c0b5a5c4ef980847" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
"nvim-tree.lua": { "branch": "master", "commit": "e179ad2f83b5955ab0af653069a493a1828c2697" },
"nvim-tree.lua": { "branch": "master", "commit": "87d096a39cb2d5d43e6771563575ff042a79f48b" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
"nvim-web-devicons": { "branch": "master", "commit": "f6b0920f452bfd7595ee9a9efe5e1ae78e0e2997" },
"opencode.nvim": { "branch": "main", "commit": "3a2303ab671a43ca0d766b98e754c4af2f3201ec" },
"nvim-web-devicons": { "branch": "master", "commit": "b8221e42cf7287c4dcde81f232f58d7b947c210d" },
"opencode.nvim": { "branch": "main", "commit": "a72e936edaa8c306452cc4678683d3c155f79cfe" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"quick-scope": { "branch": "master", "commit": "6cee1d9e0b9ac0fbffeb538d4a5ba9f5628fabbc" },
"render-markdown.nvim": { "branch": "main", "commit": "9ab9dade85d8c7d411cc89b592028da3d1b7955a" },
"snacks.nvim": { "branch": "main", "commit": "5e0e8698526f350f1280ad1ef7a8670f857c9445" },
"render-markdown.nvim": { "branch": "main", "commit": "7e6af36c846017122e07e68803bbf95f3c729ca3" },
"snacks.nvim": { "branch": "main", "commit": "bfe8c26dbd83f7c4fbc222787552e29b4eccfcc0" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "29315861711f11daf75e1cf0953ab92ec1a3e69f" },
"tiny-inline-diagnostic.nvim": { "branch": "main", "commit": "6d8dc61a9c4077d9ec62a9c8998506dcd2a5b6af" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
"tokyonight.nvim": { "branch": "main", "commit": "4d159616aee17796c2c94d2f5f87d2ee1a3f67c7" },
"vim-highlightedyank": { "branch": "master", "commit": "285a61425e79742997bbde76a91be6189bc988fb" },
"vim-peekaboo": { "branch": "master", "commit": "2a8a3187ba6b15201b2563a3f0331fcdf49da36c" },
Expand Down
5 changes: 3 additions & 2 deletions nvim/lua/nairovim/plugins/ai/avante.lua
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ return {
providers = {
copilot = {
endpoint = "https://api.github.com",
model = "claude-sonnet-4",
-- model = "gpt-5",
model = "claude-sonnet-4.5",
timeout = 15000, -- Reduced timeout for faster failure detection
extra_request_body = {
temperature = 0.75,
Expand All @@ -89,7 +90,7 @@ return {
},
claude = {
endpoint = "https://api.anthropic.com",
model = "claude-sonnet-4-20250514",
model = "claude-sonnet-4.5",
timeout = 15000, -- Reduced from 30s to 15s for faster failure detection
extra_request_body = {
temperature = 0.75,
Expand Down
23 changes: 23 additions & 0 deletions nvim/lua/nairovim/plugins/customizations/keymaps/scooter.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
----------------------------------------------------------------------
-- 1. Scooter Keymaps (nairovim.KeymapDef)
----------------------------------------------------------------------

local M = {}

--- @type nairovim.KeymapDef[]
M.mappings = {
{
mode = "n",
key_sequence = "<leader>s",
handler = "<cmd>FindReplace<CR>",
opts = { desc = "Open scooter for Find and Replace" },
},
{
mode = "v",
key_sequence = "<leader>r",
handler = '"ay<ESC><cmd>lua OpenScooterSearchText(vim.fn.getreg("a"))<CR>',
opts = { desc = "Search selected text in scooter" },
},
}

return M
4 changes: 4 additions & 0 deletions nvim/lua/nairovim/plugins/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,8 @@ return {
ft = { "markdown", "Avante", "mcphub", "copilot-chat" },
},
},

-- Other utility plugins
-- Terminal
{ "akinsho/toggleterm.nvim", version = "*", config = true },
}
72 changes: 72 additions & 0 deletions nvim/lua/nairovim/plugins/scooter.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
local M = {}
local Terminal = require("toggleterm.terminal").Terminal
local scooter_term = nil

--- Open existing scooter terminal if one is available, otherwise create a new one
local open_scooter = function()
if not scooter_term then
scooter_term = Terminal:new({
cmd = "scooter",
direction = "float",
close_on_exit = true,
highlights = {
FloatBorder = { link = "FloatBorder" },
},
float_opts = {
border = "rounded",
},
on_exit = function()
scooter_term = nil
end,
})
end
scooter_term:open()
end

--- Called by scooter to open the selected file at the correct line from the scooter search list
_G.EditLineFromScooter = function(file_path, line)
if scooter_term and scooter_term:is_open() then
scooter_term:close()
end

local current_path = vim.fn.expand("%:p")
local target_path = vim.fn.fnamemodify(file_path, ":p")

if current_path ~= target_path then
vim.cmd.edit(vim.fn.fnameescape(file_path))
end

vim.api.nvim_win_set_cursor(0, { line, 0 })
end

--- Opens scooter with the search text populated by the `search_text` arg
_G.OpenScooterSearchText = function(search_text)
if scooter_term and scooter_term:is_open() then
scooter_term:close()
end

local escaped_text = vim.fn.shellescape(search_text:gsub("\r?\n", " "))
scooter_term = Terminal:new({
cmd = "scooter --search-text " .. escaped_text,
direction = "float",
close_on_exit = true,
on_exit = function()
scooter_term = nil
end,
})
scooter_term:open()
end

----------------------------------------------------------------------
-- 2. User Commands
----------------------------------------------------------------------
vim.api.nvim_create_user_command("FindReplace", open_scooter, { desc = "Open scooter terminal for Find and replace" })

----------------------------------------------------------------------
-- 3. Keymaps
----------------------------------------------------------------------
local common_utils = require("nairovim.utils.common")
local mappings = require("nairovim.plugins.customizations.keymaps.scooter").mappings
common_utils.map(mappings)

return M
9 changes: 9 additions & 0 deletions scooter.config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[editor_open]
command = "nvim %file +%line"

[preview]
syntax_highlighting = true
syntax_highlighting_theme = "Catppuccin Macchiato"
# syntax_highlighting_theme = "Catppuccin Mocha"
# syntax_highlighting_theme = "Catppuccin Frappe"
# syntax_highlighting_theme = "Catppuccin Latte"