first commit

This commit is contained in:
2026-03-12 12:35:37 +05:30
commit 5441420e71
72 changed files with 8407 additions and 0 deletions

21
.bashrc Normal file
View File

@@ -0,0 +1,21 @@
# Put all the commands here that should run regardless of whether
# this is an interactive or non-interactive shell.
# Example command:
umask 0027
# test if the prompt var is not set and also to prevent failures
# when `$PS1` is unset and `set -u` is used
if [ -z "${PS1:-}" ]; then
# prompt var is not set, so this is *not* an interactive shell
return
fi
# If we reach this line of code, then the prompt var is set, so
# this is an interactive shell.
# Put all the commands here that should run only if this is an
# interactive shell.
# Example command:
source /home/sarjain/dotfiles/sh_personal #added by 6500gitsetup
# source /home/sarjain/dotfiles/sh_ciena #added by 6500gitsetup

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
nvim/lazy-lock.json*

37
.tmux-cht-command Normal file
View File

@@ -0,0 +1,37 @@
find
man
tldr
sed
awk
tr
cp
ls
grep
xargs
rg
ps
mv
kill
lsof
less
head
tail
tar
cp
rm
rename
jq
cat
ssh
cargo
git
git-worktree
git-status
git-commit
git-rebase
docker
docker-compose
stow
chmod
chown
make

21
.tmux-cht-languages Normal file
View File

@@ -0,0 +1,21 @@
golang
solidity
vlang
v
nodejs
javascript
tmux
typescript
zsh
cpp
c
lua
rust
python
bash
php
haskell
ArnoldC
css
html
gdb

7
.tmux/.gitattributes vendored Normal file
View File

@@ -0,0 +1,7 @@
* text=auto
# git
.gitignore text
.tmux.conf eol=lf
.tmux.conf.local eol=lf

1
.tmux/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
plugins/**

110
.zshrc Normal file
View File

@@ -0,0 +1,110 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="robbyrussell"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git starship )
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then
export EDITOR='vim'
else
export EDITOR='nvim'
fi
# Compilation flags
# export ARCHFLAGS="-arch $(uname -m)"
# Set personal aliases, overriding those provided by Oh My Zsh libs,
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
# users are encouraged to define aliases within a top-level file in
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
# - $ZSH_CUSTOM/aliases.zsh
# - $ZSH_CUSTOM/macos.zsh
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
#
#
#
#
source ~/dotfiles/sh_personal
source ~/dotfiles/sh_ciena

174
2q Normal file
View File

@@ -0,0 +1,174 @@
local map = vim.keymap.set
local opts = { noremap = true, silent = true }
map("n", "<Esc>", "<cmd>nohlsearch<CR>")
-- Diagnostic keymaps
-- map("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" })
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
-- is not what someone will guess without a bit more experience.
--
-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
-- or just use <C-\><C-n> to exit terminal mode
map("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
map("n", "<leader>-", "<cmd>Oil <CR>", { desc = "Open parent directory" })
-- Create a new buffer
map("n", "<leader>b", "<cmd> enew <CR>", { desc = "new buffer" })
map("n", "<leader>U", "<cmd> Telescope undo<CR>", { desc = "Telescope Undo" })
-- Toggle comment
map("n", "<leader>/", function()
require("Comment.api").toggle.linewise.current()
end, { desc = "Toggle comment line" })
map("n", "<leader>cb", function()
require("Comment.api").toggle.blockwise.current()
end, { desc = "Toggle comment block" })
map(
"v",
"<leader>/",
"<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
{ desc = "Toggle comment line" }
)
-- ============================================
-- GitHub Copilot Keybindings
-- ============================================
-- Copilot suggestions (in insert mode)
-- Note: These are handled by the plugin config above, but listed here for reference
-- <M-l> Accept suggestion (Alt+l)
-- <M-]> Next suggestion (Alt+])
-- <M-[> Previous suggestion (Alt+[)
-- <C-]> Dismiss suggestion (Ctrl+])
-- Copilot Chat - Quick Actions
map("n", "<leader>jj", "<cmd>CopilotChatToggle<CR>", { desc = "Toggle Copilot Chat" })
map("n", "<leader>jo", "<cmd>CopilotChat<CR>", { desc = "Open Copilot Chat" })
map("n", "<leader>jx", "<cmd>CopilotChatClose<CR>", { desc = "Close Copilot Chat" })
map("n", "<leader>jr", "<cmd>CopilotChatReset<CR>", { desc = "Reset Chat History" })
-- Copilot Chat - Code Actions (work in normal and visual mode)
map({ "n", "v" }, "<leader>je", "<cmd>CopilotChatExplain<CR>", { desc = "Explain Code" })
map({ "n", "v" }, "<leader>jt", "<cmd>CopilotChatTests<CR>", { desc = "Generate Tests" })
map({ "n", "v" }, "<leader>jf", "<cmd>CopilotChatFix<CR>", { desc = "Fix Code" })
map({ "n", "v" }, "<leader>jO", "<cmd>CopilotChatOptimize<CR>", { desc = "Optimize Code" })
map({ "n", "v" }, "<leader>jd", "<cmd>CopilotChatDocs<CR>", { desc = "Generate Documentation" })
map({ "n", "v" }, "<leader>jv", "<cmd>CopilotChatReview<CR>", { desc = "Review Code" })
-- Copilot Chat - Git Integration
map("n", "<leader>jc", "<cmd>CopilotChatCommit<CR>", { desc = "Generate Commit Message" })
map("n", "<leader>jC", "<cmd>CopilotChatCommitStaged<CR>", { desc = "Commit Message (Staged)" })
-- Copilot Chat - Quick Question
map("n", "<leader>jq", function()
local input = vim.fn.input("Quick Chat: ")
if input ~= "" then
require("CopilotChat").ask(input)
end
end, { desc = "Quick Question to Copilot" })
-- Copilot Chat - Visual Mode
map("v", "<leader>jv", ":CopilotChatVisual ", { desc = "Chat with Selection" })
map("v", "<leader>ji", ":CopilotChatInline<CR>", { desc = "Inline Chat" })
-- Copilot Chat - Buffer Context
map("n", "<leader>jb", function()
local input = vim.fn.input("Ask Copilot (Buffer Context): ")
if input ~= "" then
require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer })
end
end, { desc = "Ask About Entire Buffer" })
-- Copilot Chat - Diagnostic Help
map("n", "<leader>jD", function()
require("CopilotChat").ask("Help with diagnostics", {
selection = require("CopilotChat.select").diagnostics,
})
end, { desc = "Fix Diagnostics with Copilot" })
-- Copilot Panel Toggle (alternative suggestion view)
map("n", "<leader>jp", "<cmd>Copilot panel<CR>", { desc = "Open Copilot Panel" })
-- line numbers
map("n", "<leader>nn", "<cmd> set nu! <CR>", { desc = "Toggle line number" })
map("n", "<leader>nr", "<cmd> set rnu! <CR>", { desc = "Toggle relative number" })
-- TIP: Disable arrow keys in normal mode
map("n", "<left>", '<cmd>echo "Use h to move!!"<CR>')
map("n", "<right>", '<cmd>echo "Use l to move!!"<CR>')
map("n", "<up>", '<cmd>echo "Use k to move!!"<CR>')
map("n", "<down>", '<cmd>echo "Use j to move!!"<CR>')
map("n", "<leader>wk", "<cmd>WhichKey<CR>", { desc = "Which-Key all keymaps" })
map("n", "<leader>wK", function()
local input = vim.fn.input("WhichKey: ")
vim.cmd("WhichKey" .. input)
end, { desc = "Which-Key query lookup" })
map("n", "<leader>gs", "<cmd>Git status<CR>", { desc = "Git status" })
-- Keybinds to make split navigation easier.
-- Use CTRL+<hjkl> to switch between windows
--
-- See `:help wincmd` for a list of all window commands
map("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
map("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
map("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
map("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
map("n", "<S-tab>", function()
require("nvchad.tabufline").prev()
end, opts)
map("n", "<tab>", function()
require("nvchad.tabufline").next()
end, opts)
map("n", "<leader>q", function()
require("nvchad.tabufline").close_buffer()
end, opts)
map("n", "<A-j>", "<cmd>:m .+1<CR>==", opts)
map("n", "<A-k>", "<cmd>:m .-2<CR>==", opts)
map("i", "<A-j>", "<ESC><cmd>:m .+1<CR>==gi", opts)
map("i", "<A-k>", "<ESC><cmd>:m .-2<CR>==gi", opts)
map("v", "<A-j>", ":m '>+1<CR>gv=gv", opts)
map("v", "<A-k>", ":m '<-2<CR>gv=gv", opts)
map("n", "<leader>cc", function()
local ok, start = require("indent_blankline.utils").get_current_context(
vim.g.indent_blankline_context_patterns,
vim.g.indent_blankline_use_treesitter_scope
)
if ok then
vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start, 0 })
vim.cmd([[normal! _]])
end
end, { desc = "Jump to current context" })
map("n", "<leader>cr, "<cmd>cc -o % %.c <CR>", {desc = "Run C program"})
-- greatest remap ever
map("x", "<leader>p", [["_dP]])
map("n", "<leader>xx", "<cmd>!chmod +x %<CR>", { silent = true })
map("i", "<C-c>", "<Esc>", opts)
-- next greatest remap ever : asbjornHaland
map({ "n", "v" }, "<leader>y", [["+y]])
vim.keymap.set("n", "Q", "<nop>")
vim.keymap.set("n", "Q!", "<nop>")
vim.keymap.set("n", "Wq", "<nop>")
map("n", "<leader>Y", [["+Y]])
map("n", "<leader>C", "<cmd> Cheat <CR>")
map("n", "<leader>fa", "<cmd> lua require('fzf-lua').files() <CR>", { desc = "FZF find files" })
map("n", "<leader>ff", "<cmd> lua require('fzf-lua').files() <CR>", { desc = "FZF find files" })
map("n", "<leader>fq", "<cmd> lua require('fzf-lua').quickfix() <CR>", { desc = "FZF quickfix" })
map("n", "<leader>fb", "<cmd> lua require('fzf-lua').buffers() <CR>", { desc = "FZF find buffers" })
map("n", "<leader>fZ", "<cmd> lua require('fzf-lua').lgerp_curbuf() <CR>", { desc = "FZF Live grep current buffer" })
map("n", "<leader>fd", "<cmd> lua require('fzf-lua').oldfiles() <CR>", { desc = "FZF opened files history" })
map("n", "<leader>fm", "<cmd> lua require('fzf-lua').marks() <CR>", { desc = "FZF marks" })
map("n", "<leader>fw", "<cmd> lua require('fzf-lua').live_grep() <CR>", { desc = "FZF live grep" })
map("n", "<leader>fg", "<cmd> lua require('fzf-lua').git_Commits() <CR>", { desc = "FZF Git commits" })
map("n", "<leader>fG", "<cmd> lua require('fzf-lua').git_bcommits() <CR>", { desc = "FZF Git commits" })
map("n", "<leader>fs", "<cmd> lua require('fzf-lua').git_status() <CR>", { desc = "FZF Git commits" })
map("n", "<leader>fp", "<cmd> lua require('fzf-lua').manpages() <CR>", { desc = "FZF Manpages" })

1
README.md Normal file
View File

@@ -0,0 +1 @@
# dotfiles

21
bash/.bashrc Normal file
View File

@@ -0,0 +1,21 @@
# Put all the commands here that should run regardless of whether
# this is an interactive or non-interactive shell.
# Example command:
umask 0027
# test if the prompt var is not set and also to prevent failures
# when `$PS1` is unset and `set -u` is used
if [ -z "${PS1:-}" ]; then
# prompt var is not set, so this is *not* an interactive shell
return
fi
# If we reach this line of code, then the prompt var is set, so
# this is an interactive shell.
# Put all the commands here that should run only if this is an
# interactive shell.
# Example command:
source ~/dotfiles/sh_personal #added by 6500gitsetup
alias clear="TERM=xterm /usr/bin/clear"

50
bash/bash_personal Normal file
View File

@@ -0,0 +1,50 @@
#---------------------------------- Alias -----------------------------------------
alias tmux='tmux -u'
alias cht="cht.sh"
# alias ls="exa --group-directories-first --icons -T -L1 -l"
# alias lt="exa --group-directories-first --icons -T -L1"
# alias ll="ls -lagh"
alias ls="lsd"
alias bless="bat --paging=auto"
alias cat="bat -pf"
#--------------------------------- Exports ---------------------------------------
export EDITOR='nvim'
# export MANPAGER="sh -c 'col -bx | bat -l man -pfn --paging always'"
export MANPAGER='nvim +Man!'
export MANROFFOPT="-c"
#--------------------------------- Set bash prompt -------------------------------
# export PS1="\e[1;32m\h\e[0m:\e[1;34m\w\e[0m\n$ "
#
#
#--- DevOps Shell
# Key bindings
# bind '"\C-f":"tmux-sessionizer\n"'
eval "$(starship init bash)"
if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then
tmux attach-session -t 0|| tmux new-session -s 0
fi
#
# [ -f ~/.fzf.bash ] && source ~/.fzf.bash
# Set up fzf key bindings and fuzzy completion
eval "$(fzf --bash)"
# alias f="fzf --preview 'fzf-preview.sh {}'"
# alias t="fzf-tmux"
# alias tfn="~/scripts/nvim-fzf.sh"
# export FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS'
# --multi
# --color=fg:-1,fg+:#d0d0d0,bg:-1,bg+:#262626
# --color=hl:#5f87af,hl+:#5fd7ff,info:#afaf87,marker:#87ff00
# --color=prompt:#d7005f,spinner:#af5fff,pointer:#af5fff,header:#87afaf
# --color=border:#262626,label:#aeaeae,query:#d9d9d9
# --border="rounded"
# --border-label="" --preview-window="border-rounded" --prompt="> "
# --info="inline" --marker=">" --pointer="◆" --separator="─" --scrollbar="│"'
# colorscript -r
# neofetch

82
bash/starship.toml Executable file
View File

@@ -0,0 +1,82 @@
format = """
$conda$username$hostname$directory$git_branch$git_state$git_status$python$cmd_duration$line_break\
$character"""
# Wait 10 milliseconds for starship to check files under the current directory.
scan_timeout = 10
# Disable the blank line at the start of the prompt
add_newline = true
# # Define custom colors
# [palettes.foo]
# # Overwrite existing color
# blue = '21'
# # Define new color
# mustard = '#af8700'
[directory]
style = "purple"
truncation_length = 3
format = ': [$path]($style)[$read_only]($read_only_style) '
truncation_symbol = ".../"
truncate_to_repo =true
[character]
success_symbol = '[](bold green)'
# success_symbol = '[➜](bold green)'
error_symbol = '[✗](bold purple) '
vimcmd_symbol = "[](green)"
[git_branch]
symbol = '🌱 '
# truncation_length = 4
truncation_symbol = ''
format = '[$symbol$branch]($style) '
[git_status]
conflicted = '🏳'
ahead = '🏎💨'
behind = '😰'
diverged = '😵'
up_to_date = '✓'
untracked = '🤷'
stashed = '📦'
modified = '📝'
staged = '[++\($count\)](green)'
renamed = '👅'
deleted = '🗑'
[git_state]
format = '[\($state( $progress_current of $progress_total)\)]($style) '
cherry_pick = '[🍒 PICKING](bold red)'
[cmd_duration]
min_time = 100
format = 'underwent [$duration](bold yellow)'
[os]
disabled = false
[username]
style_user = 'white bold'
style_root = 'black bold'
format = '[$user]($style) '
disabled = false
show_always = true
[hostname]
ssh_only = false
format = '@(bold blue) [$hostname](bold red) '
trim_at = '.ciena.com'
disabled = false
[status]
style = 'bg:blue'
symbol = '🔴 '
success_symbol = '🟢 SUCCESS'
format = '[\[$symbol$common_meaning$signal_name$maybe_int\]]($style) '
map_symbol = true
disabled = false
[conda]
format = "[$symbol$environment]($style) "

127
bash/zoxide Normal file
View File

@@ -0,0 +1,127 @@
# =============================================================================
#
# Utility functions for zoxide.
#
# pwd based on the value of _ZO_RESOLVE_SYMLINKS.
function __zoxide_pwd() {
\builtin pwd -L
}
# cd + custom logic based on the value of _ZO_ECHO.
function __zoxide_cd() {
# shellcheck disable=SC2164
\builtin cd -- "$@"
}
# =============================================================================
#
# Hook configuration for zoxide.
#
# Hook to add new entries to the database.
__zoxide_oldpwd="$(__zoxide_pwd)"
function __zoxide_hook() {
\builtin local -r retval="$?"
\builtin local pwd_tmp
pwd_tmp="$(__zoxide_pwd)"
if [[ ${__zoxide_oldpwd} != "${pwd_tmp}" ]]; then
__zoxide_oldpwd="${pwd_tmp}"
\command zoxide add -- "${__zoxide_oldpwd}"
fi
return "${retval}"
}
# Initialize hook.
if [[ ${PROMPT_COMMAND:=} != *'__zoxide_hook'* ]]; then
PROMPT_COMMAND="__zoxide_hook;${PROMPT_COMMAND#;}"
fi
# =============================================================================
#
# When using zoxide with --no-cmd, alias these internal functions as desired.
#
__zoxide_z_prefix='z#'
# Jump to a directory using only keywords.
function __zoxide_z() {
# shellcheck disable=SC2199
if [[ $# -eq 0 ]]; then
__zoxide_cd ~
elif [[ $# -eq 1 && $1 == '-' ]]; then
__zoxide_cd "${OLDPWD}"
elif [[ $# -eq 1 && -d $1 ]]; then
__zoxide_cd "$1"
elif [[ ${@: -1} == "${__zoxide_z_prefix}"?* ]]; then
# shellcheck disable=SC2124
\builtin local result="${@: -1}"
__zoxide_cd "${result:${#__zoxide_z_prefix}}"
else
\builtin local result
# shellcheck disable=SC2312
result="$(\command zoxide query --exclude "$(__zoxide_pwd)" -- "$@")" &&
__zoxide_cd "${result}"
fi
}
# Jump to a directory using interactive search.
function __zoxide_zi() {
\builtin local result
result="$(\command zoxide query --interactive -- "$@")" && __zoxide_cd "${result}"
}
# =============================================================================
#
# Commands for zoxide. Disable these using --no-cmd.
#
\builtin unalias z &>/dev/null || \builtin true
function z() {
__zoxide_z "$@"
}
\builtin unalias zi &>/dev/null || \builtin true
function zi() {
__zoxide_zi "$@"
}
# Load completions.
# - Bash 4.4+ is required to use `@Q`.
# - Completions require line editing. Since Bash supports only two modes of
# line editing (`vim` and `emacs`), we check if either them is enabled.
# - Completions don't work on `dumb` terminals.
if [[ ${BASH_VERSINFO[0]:-0} -eq 4 && ${BASH_VERSINFO[1]:-0} -ge 4 || ${BASH_VERSINFO[0]:-0} -ge 5 ]] &&
[[ :"${SHELLOPTS}": =~ :(vi|emacs): && ${TERM} != 'dumb' ]]; then
# Use `printf '\e[5n'` to redraw line after fzf closes.
\builtin bind '"\e[0n": redraw-current-line' &>/dev/null
function __zoxide_z_complete() {
# Only show completions when the cursor is at the end of the line.
[[ ${#COMP_WORDS[@]} -eq $((COMP_CWORD + 1)) ]] || return
# If there is only one argument, use `cd` completions.
if [[ ${#COMP_WORDS[@]} -eq 2 ]]; then
\builtin mapfile -t COMPREPLY < <(
\builtin compgen -A directory -- "${COMP_WORDS[-1]}" || \builtin true
)
# If there is a space after the last word, use interactive selection.
elif [[ -z ${COMP_WORDS[-1]} ]] && [[ ${COMP_WORDS[-2]} != "${__zoxide_z_prefix}"?* ]]; then
\builtin local result
# shellcheck disable=SC2312
result="$(\command zoxide query --exclude "$(__zoxide_pwd)" --interactive -- "${COMP_WORDS[@]:1:${#COMP_WORDS[@]}-2}")" &&
COMPREPLY=("${__zoxide_z_prefix}${result}/")
\builtin printf '\e[5n'
fi
}
\builtin complete -F __zoxide_z_complete -o filenames -- z
\builtin complete -r zi &>/dev/null || \builtin true
fi
# =============================================================================
#
# To initialize zoxide, add this to your configuration (usually ~/.bashrc):
#
eval "$(zoxide init bash)"

16
install.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
dotfilesDir=$(pwd)
echo "Linking dot files"
rm -rf ~/.bashrc
rm -rf ~/.zshrc
ln -s -f ${dotfilesDir}/.bashrc ~/.bashrc
ln -s -f ${dotfilesDir}/.zshrc ~/.zshrc
ln -s -f ${dotfilesDir}/tmux/tmux.conf ~/.tmux.conf
ln -s -f ${dotfilesDir}/tmux/tmux.conf.local ~/.tmux.conf.local
ln -s -f ${dotfilesDir}/nvim ~/.config/nvim
ln -s -f ${dotfilesDir}/starship.toml ~/.config/starship.toml
#
# echo "Installing fzf"
# git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
# ~/.fzf/install

19
nvim/init.lua Normal file
View File

@@ -0,0 +1,19 @@
-- vim options
require "config"
-- key bindings
require "mapping"
require "utils"
-- put this in your main init.lua file ( before lazy setup )
vim.g.base46_cache = vim.fn.stdpath("data") .. "/base46_cache/"
require "kickstart.plugins._init"
-- (method 1, For heavy lazyloaders)
dofile(vim.g.base46_cache .. "defaults")
dofile(vim.g.base46_cache .. "statusline")
-- (method 2, for non lazyloaders) to load all highlights at once
for _, v in ipairs(vim.fn.readdir(vim.g.base46_cache)) do
dofile(vim.g.base46_cache .. v)
end
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

116
nvim/lua/chadrc.lua Normal file
View File

@@ -0,0 +1,116 @@
local options = {
base46 = {
theme = "tokyodark", -- default theme
hl_add = {},
hl_override = {},
integrations = {},
changed_themes = {},
transparency = true,
theme_toggle = { "tokyodark", "tokyodark" },
},
ui = {
cmp = {
icons_left = true, -- only for non-atom styles!
lspkind_text = true,
style = "flat_dark", -- default/flat_light/flat_dark/atom/atom_colored
format_colors = {
tailwind = false, -- will work for css lsp too
icon = "󱓻",
},
},
telescope = { style = "bordered" }, -- borderless / bordered
statusline = {
enabled = true,
theme = "vscode_colored", -- default/vscode/vscode_colored/minimal
-- default/round/block/arrow separators work only for default statusline theme
-- round and block will work for minimal theme only
separator_style = "block",
order = nil,
modules = nil,
},
-- lazyload it when there are 1+ buffers
tabufline = {
enabled = true,
lazyload = true,
order = { "treeOffset", "buffers", "tabs", "btns" },
modules = nil,
},
},
nvdash = {
load_on_startup = false,
header = {
" ",
" ▄▄ ▄ ▄▄▄▄▄▄▄ ",
" ▄▀███▄ ▄██ █████▀ ",
" ██▄▀███▄ ███ ",
" ███ ▀███▄ ███ ",
" ███ ▀██ ███ ",
" ███ ▀ ███ ",
" ▀██ █████▄▀█▀▄██████▄ ",
" ▀ ▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ",
" ",
"  Powered By  eovim ",
" ",
},
buttons = {
{ txt = " Find File", keys = "ff", cmd = "Telescope find_files" },
{ txt = " Recent Files", keys = "fo", cmd = "Telescope oldfiles" },
{ txt = "󰈭 Find Word", keys = "fw", cmd = "Telescope live_grep" },
{ txt = "󱥚 Themes", keys = "th", cmd = ":lua require('nvchad.themes').open()" },
{ txt = " Mappings", keys = "ch", cmd = "NvCheatsheet" },
{ txt = "", hl = "NvDashFooter", no_gap = true, rep = true },
{
txt = function()
local stats = require("lazy").stats()
local ms = math.floor(stats.startuptime) .. " ms"
return " Loaded " .. stats.loaded .. "/" .. stats.count .. " plugins in " .. ms
end,
hl = "NvDashFooter",
no_gap = true,
},
{ txt = "", hl = "NvDashFooter", no_gap = true, rep = true },
},
},
term = {
winopts = { number = false, relativenumber = false },
sizes = { sp = 0.3, vsp = 0.2, ["bo sp"] = 0.3, ["bo vsp"] = 0.2 },
float = {
relative = "editor",
row = 0.3,
col = 0.25,
width = 0.5,
height = 0.5,
border = "single",
},
},
lsp = { signature = true },
cheatsheet = {
theme = "grid", -- simple/grid
excluded_groups = { "terminal (t)", "autopairs", "Nvim", "Opens" }, -- can add group name or with mode
},
mason = { pkgs = {}, skip = {} },
colorify = {
enabled = true,
mode = "virtual", -- fg, bg, virtual
virt_text = "󱓻 ",
highlight = { hex = true, lspvars = true },
},
}
local status, chadrc = pcall(require, "chadrc")
return vim.tbl_deep_extend("force", options, status and chadrc or {})

85
nvim/lua/config.lua Normal file
View File

@@ -0,0 +1,85 @@
-- Set <space> as the leader key
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.opt.autoread = true
vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "CursorHoldI", "FocusGained" }, {
command = "if mode() != 'c' | checktime | endif",
pattern = { "*" },
})
-- Set to true if you have a Nerd Font installed and selected in the terminal
vim.g.have_nerd_font = true
-- [[ Setting options ]]
-- See `:help vim.opt`
-- NOTE: You can change these options as you wish!
-- For more options, you can see `:help option-list`
-- Make line numbers default
vim.opt.number = true
-- You can also add relative line numbers, to help with jumping.
-- Experiment for yourself to see if you like it!
vim.opt.relativenumber = true
-- Enable mouse mode, can be useful for resizing splits for example!
vim.opt.mouse = "a"
-- Don't show the mode, since it's already in the status line
vim.opt.showmode = false
-- Sync clipboard between OS and Neovim.
-- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
vim.schedule(function()
vim.opt.clipboard = "unnamedplus"
end)
-- Enable break indent
vim.opt.breakindent = true
vim.opt.colorcolumn = "80"
-- Save undo history
vim.opt.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
vim.opt.ignorecase = true
vim.opt.smartcase = true
-- Keep signcolumn on by default
vim.opt.signcolumn = "yes"
-- Decrease update time
vim.opt.updatetime = 250
-- Decrease mapped sequence wait time
-- Displays which-key popup sooner
vim.opt.timeoutlen = 300
-- Configure how new splits should be opened
vim.opt.splitright = true
vim.opt.splitbelow = true
vim.opt.shiftwidth = 4
vim.opt.shiftwidth = 4
vim.opt.tabstop = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
-- Sets how neovim will display certain whitespace characters in the editor.
-- See `:help 'list'`
-- and `:help 'listchars'`
vim.opt.list = true
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "" }
-- Preview substitutions live, as you type!
vim.opt.inccommand = "split"
-- Show which line your cursor is on
vim.opt.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor.
vim.opt.scrolloff = 6

View File

@@ -0,0 +1,52 @@
--[[
--
-- This file is not required for your own configuration,
-- but helps people determine if their system is setup correctly.
--
--]]
local check_version = function()
local verstr = tostring(vim.version())
if not vim.version.ge then
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
return
end
if vim.version.ge(vim.version(), "0.10-dev") then
vim.health.ok(string.format("Neovim version is: '%s'", verstr))
else
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
end
end
local check_external_reqs = function()
-- Basic utils: `git`, `make`, `unzip`
for _, exe in ipairs({ "git", "make", "unzip", "rg" }) do
local is_executable = vim.fn.executable(exe) == 1
if is_executable then
vim.health.ok(string.format("Found executable: '%s'", exe))
else
vim.health.warn(string.format("Could not find executable: '%s'", exe))
end
end
return true
end
return {
check = function()
vim.health.start("kickstart.nvim")
vim.health.info([[NOTE: Not every warning is a 'must-fix' in `:checkhealth`
Fix only warnings for plugins and languages you intend to use.
Mason will give warnings for languages that are not installed.
You do not need to install, unless you want to use those languages!]])
local uv = vim.uv or vim.loop
vim.health.info("System Information: " .. vim.inspect(uv.os_uname()))
check_version()
check_external_reqs()
end,
}

View File

@@ -0,0 +1,133 @@
-- [[ Install `lazy.nvim` plugin manager ]]
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
error("Error cloning lazy.nvim:\n" .. out)
end
end ---@diagnostic disable-next-line: undefined-field
vim.opt.rtp:prepend(lazypath)
-- [[ Configure and install plugins ]]
--
-- NOTE: Here is where you install your plugins.
require("lazy").setup({
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
-- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
--
{
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
"folke/lazydev.nvim",
ft = "lua",
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = "luvit-meta/library", words = { "vim%.uv" } },
},
},
},
require("kickstart.plugins.nv"),
-- or just use Telescope themes
require("kickstart.plugins.nvterm"), -- nvim terminal
require("kickstart.plugins.gitsigns"), -- git signs
require("kickstart.plugins.oil"), -- file browser
require("kickstart.plugins.which-key"), -- key map help
require("kickstart.plugins.lspconfig"), -- language server
require("kickstart.plugins.transparent"), -- for transparency
-- require("kickstart.plugins.noice"), -- for search and command line prompt
require("kickstart.plugins.fzf-lua"), -- for fzf search
require("kickstart.plugins.auto-session"),
require("kickstart.plugins.conform"),
require("kickstart.plugins.cmp"),
require("kickstart.plugins.copilot_chat"),
require("kickstart.plugins.comment"),
require("kickstart.plugins.telescope"),
require("kickstart.plugins.indent_line"),
require("kickstart.plugins.lint"),
require("kickstart.plugins.autopairs"),
require("kickstart.plugins.treesitter"),
require("kickstart.plugins.trouble"),
require("kickstart.plugins.gitsigns"), -- adds gitsigns recommend keymaps
require("kickstart.plugins.todo-comment"), -- Highlight todo, notes, etc in comments
-- require("kickstart.plugins.mini"),
require("kickstart.plugins.other"),
require("kickstart.plugins.undotree"),
require("kickstart.plugins.colorizer"),
require("kickstart.plugins.harpoon"),
{
"chentoast/marks.nvim",
config = function()
require("marks").setup({
default_mappings = true,
})
end,
},
{
"junegunn/seoul256.vim"
},
-- NOTE: Plugins can also be added by using a table,
-- with the first argument being the link and the following
-- keys can be used to configure plugin behavior/loading/etc.
--
-- Use `opts = {}` to force a plugin to be loaded.
--
-- Here is a more advanced example where we pass configuration
-- options to `gitsigns.nvim`. This is equivalent to the following Lua:
-- require('gitsigns').setup({ ... })
--
-- See `:help gitsigns` to understand what the configuration keys do
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
--
-- This is often very useful to both group configuration, as well as handle
-- lazy loading plugins that don't need to be loaded immediately at startup.
--
-- For example, in the following configuration, we use:
-- event = 'VimEnter'
--
-- which loads which-key before all the UI elements are loaded. Events can be
-- normal autocommands events (`:help autocmd-events`).
--
-- Then, because we use the `config` key, the configuration only runs
-- after the plugin has been loaded:
-- config = function() ... end
-- NOTE: Plugins can specify dependencies.
--
-- The dependencies are proper plugin specifications as well - anything
-- you do for a plugin at the top level, you can do for a dependency.
--
-- Use the `dependencies` key to specify the dependencies of a particular plugin
-- require 'kickstart.plugins.debug',
}, {
ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the
-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
icons = vim.g.have_nerd_font and {} or {
cmd = "",
config = "🛠",
event = "📅",
ft = "📂",
init = "",
keys = "🗝",
plugin = "🔌",
runtime = "💻",
require = "🌙",
source = "📄",
start = "🚀",
task = "📌",
lazy = "💤 ",
},
},
})

View File

@@ -0,0 +1,38 @@
return {
{
"rmagatti/auto-session",
lazy = false,
---enables autocomplete for opts
opts = {
-- suppressed_dirs = { "~/", "~/Projects", "~/Downloads", "/" },
-- log_level = 'debug',
-- ⚠️ This will only work if Telescope.nvim is installed
-- The following are already the default values, no need to provide them if these are already the settings you want.
use_git_branch = true, -- Include git branch name in session name
lazy_support = true, -- Automatically detect if Lazy.nvim is being used and wait until Lazy is done to make sure session is restored correctly. Does nothing if Lazy isn't being used. Can be disabled if a problem is suspected or for debugging
session_lens = {
load_on_setup = true, -- Initialize on startup (requires Telescope)
theme_conf = { -- Pass through for Telescope theme options
-- layout_config = { -- As one example, can change width/height of picker
-- width = 0.8, -- percent of window
-- height = 0.5,
-- },
},
previewer = false, -- File preview for session picker
mappings = {
-- Mode can be a string or a table, e.g. {"i", "n"} for both insert and normal mode
delete_session = { "n", "<leader>Sd>" },
alternate_session = { "n", "<leader>Sa>" },
copy_session = { "n", "<leader>Sy" },
},
session_control = {
control_dir = vim.fn.stdpath("data") .. "/auto_session/", -- Auto session control dir, for control files, like alternating between two sessions with session-lens
control_filename = "session_control.json", -- File name of the session control file
},
},
},
},
}

View File

@@ -0,0 +1,13 @@
return {
"windwp/nvim-autopairs",
event = "InsertEnter",
-- Optional dependency
dependencies = { "hrsh7th/nvim-cmp" },
config = function()
require("nvim-autopairs").setup({})
-- If you want to automatically add `(` after selecting a function or method
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
local cmp = require("cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
end,
}

View File

@@ -0,0 +1,24 @@
return {
{
"romgrk/barbar.nvim",
dependencies = {
"lewis6991/gitsigns.nvim", -- OPTIONAL: for git status
"nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons
},
init = function()
vim.g.barbar_auto_setup = false
end,
opts = {
-- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default:
-- animation = true,
-- insert_at_start = true,
-- …etc.
autohide = true,
no_name_title = nil,
hide = { extensions = false, inactive = false },
animation = true,
tabpages = true,
clickable = true,
},
},
}

View File

@@ -0,0 +1,39 @@
return {
'saghen/blink.cmp',
-- optional: provides snippets for the snippet source
dependencies = 'rafamadriz/friendly-snippets',
-- use a release tag to download pre-built binaries
version = '*',
-- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
-- build = 'cargo build --release',
-- If you use nix, you can build from source using latest nightly rust with:
-- build = 'nix run .#build-plugin',
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
-- 'default' for mappings similar to built-in completion
-- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate)
-- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept
-- See the full "keymap" documentation for information on defining your own keymap.
keymap = { preset = 'default' },
appearance = {
-- Sets the fallback highlight groups to nvim-cmp's highlight groups
-- Useful for when your theme doesn't support blink.cmp
-- Will be removed in a future release
use_nvim_cmp_as_default = true,
-- Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = 'normal'
},
-- Default list of enabled providers defined so that you can extend it
-- elsewhere in your config, without redefining it, due to `opts_extend`
sources = {
default = { 'lsp', 'path', 'snippets', 'buffer' },
},
},
opts_extend = { "sources.default" }
}

View File

@@ -0,0 +1,132 @@
return {
{ -- Autocompletion
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
-- Snippet Engine & its associated nvim-cmp source
{
"L3MON4D3/LuaSnip",
build = (function()
-- Build Step is needed for regex support in snippets.
-- This step is not supported in many windows environments.
-- Remove the below condition to re-enable on windows.
if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then
return
end
return "make install_jsregexp"
end)(),
dependencies = {
-- `friendly-snippets` contains a variety of premade snippets.
-- See the README about individual language/framework/plugin snippets:
-- https://github.com/rafamadriz/friendly-snippets
-- {
-- 'rafamadriz/friendly-snippets',
-- config = function()
-- require('luasnip.loaders.from_vscode').lazy_load()
-- end,
-- },
-- autopairing of (){}[] etc
{
"windwp/nvim-autopairs",
opts = {
fast_wrap = {},
disable_filetype = { "TelescopePrompt", "vim" },
},
config = function(_, opts)
require("nvim-autopairs").setup(opts)
-- setup cmp for autopairs
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done())
end,
},
},
},
-- cmp sources plugins
"hrsh7th/cmp-nvim-lua",
"hrsh7th/cmp-buffer",
"saadparwaiz1/cmp_luasnip",
-- Adds other completion capabilities.
-- nvim-cmp does not ship with all sources by default. They are split
-- into multiple repos for maintenance purposes.
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-path",
},
config = function()
-- See `:help cmp`
local cmp = require("cmp")
local luasnip = require("luasnip")
luasnip.config.setup({})
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
completion = { completeopt = "menu,menuone,noinsert" },
-- For an understanding of why these mappings were
-- chosen, you will need to read `:help ins-completion`
--
-- No, but seriously. Please read `:help ins-completion`, it is really good!
mapping = cmp.mapping.preset.insert({
-- Select the [n]ext item
["<C-n>"] = cmp.mapping.select_next_item(),
-- Select the [p]revious item
["<C-p>"] = cmp.mapping.select_prev_item(),
-- Scroll the documentation window [b]ack / [f]orward
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
-- Accept ([y]es) the completion.
-- This will auto-import if your LSP supports it.
-- This will expand snippets if the LSP sent a snippet.
["<C-y>"] = cmp.mapping.confirm({ select = true }),
-- If you prefer more traditional completion keymaps,
-- you can uncomment the following lines
["<CR>"] = cmp.mapping.confirm({ select = true }),
-- ["<Tab>"] = cmp.mapping.select_next_item(),
-- ["<S-Tab>"] = cmp.mapping.select_prev_item(),
-- Manually trigger a completion from nvim-cmp.
-- Generally you don't need this, because nvim-cmp will display
-- completions whenever it has completion options available.
["<C-Space>"] = cmp.mapping.complete({}),
-- Think of <c-l> as moving to the right of your snippet expansion.
-- So if you have a snippet that's like:
-- function $name($args)
-- $body
-- end
--
-- <c-l> will move you to the right of each of the expansion locations.
-- <c-h> is similar, except moving you backwards.
["<C-l>"] = cmp.mapping(function()
if luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
end
end, { "i", "s" }),
["<C-h>"] = cmp.mapping(function()
if luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
end
end, { "i", "s" }),
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
}),
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "nvim_lua" },
{ name = "path" },
},
})
end,
},
}

View File

@@ -0,0 +1,14 @@
return {
{
"NvChad/nvim-colorizer.lua",
event = "User FilePost",
config = function(_, opts)
require("colorizer").setup(opts)
-- execute colorizer as soon as possible
vim.defer_fn(function()
require("colorizer").attach_to_buffer(0)
end, 0)
end,
}
}

View File

@@ -0,0 +1,26 @@
return {
{ -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
-- 'folke/tokyonight.nvim',
-- 'navarasu/onedark.nvim',
"EdenEast/nightfox.nvim",
-- 'olimorris/onedarkpro.nvim',
--'metalelf0/jellybeans-nvim',
priority = 1000, -- Make sure to load this before all the other start plugins.
init = function()
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme("carbonfox")
-- You can configure highlights by doing something like:
vim.cmd.hi("Comment gui=none")
end,
opts = {
transparent_background = true,
},
},
}

View File

@@ -0,0 +1,36 @@
return {
{
"numToStr/Comment.nvim",
keys = {
{ "gcc", mode = "n", desc = "Comment toggle current line" },
{ "gc", mode = { "n", "o" }, desc = "Comment toggle linewise" },
{ "gc", mode = "x", desc = "Comment toggle linewise (visual)" },
{ "gbc", mode = "n", desc = "Comment toggle current block" },
{ "gb", mode = { "n", "o" }, desc = "Comment toggle blockwise" },
{ "gb", mode = "x", desc = "Comment toggle blockwise (visual)" },
},
opts = {
mappings = {
-- toggle comment in both modes
n = {
["<leader>/"] = {
function()
require("Comment.api").toggle.linewise.current()
end,
"Toggle comment",
},
},
v = {
["<leader>/"] = {
"<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
"Toggle comment",
},
},
},
},
config = function(_, opts)
require("Comment").setup(opts)
end,
},
}

View File

@@ -0,0 +1,44 @@
return {
{ -- Autoformat
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
keys = {
{
"<leader>Fm",
function()
require("conform").format({ async = true, lsp_format = "fallback" })
end,
mode = "",
desc = "[m] format buffer",
},
},
opts = {
notify_on_error = false,
-- format_on_save = function(bufnr)
-- -- Disable "format_on_save lsp_fallback" for languages that don't
-- -- have a well standardized coding style. You can add additional
-- -- languages here or re-enable it for the disabled ones.
-- local disable_filetypes = { c = true, cpp = true }
-- local lsp_format_opt
-- if disable_filetypes[vim.bo[bufnr].filetype] then
-- lsp_format_opt = 'never'
-- else
-- lsp_format_opt = 'fallback'
-- end
-- return {
-- timeout_ms = 500,
-- lsp_format = lsp_format_opt,
-- }
-- end,
formatters_by_ft = {
lua = { "stylua" },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
-- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
},
},
}

View File

@@ -0,0 +1,92 @@
return {
"CopilotC-Nvim/CopilotChat.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
"nvim-tree/nvim-web-devicons",
{ "nvim-lua/plenary.nvim", branch = "master" },
},
build = "make tiktoken",
suggestion = {
enabled = true,
auto_trigger = true,
debounce=50,
},
opts = {
window = {
layout = "vertical",
width = 0.4, -- Fixed width in columns
height = 0.5, -- Fixed height in rows
border = "double", -- 'single', 'double', 'rounded', 'solid'
title = "🤖 AI Assistant",
zindex = 100, -- Ensure window stays on top
},
headers = {
user = "👤 You",
assistant = "🤖 Copilot",
tool = "🔧 Tool",
},
separator = "━━",
auto_fold = true, -- Automatically folds non-assistant messages
},
-- Model selection
model = "gpt-4", -- 'gpt-4' | 'gpt-3.5-turbo'
-- Temperature for responses (0-1, higher = more creative)
temperature = 0.1,
-- Question header
question_header = "## 👤 User ",
-- Answer header
answer_header = "## 🤖 Copilot ",
-- Error header
error_header = "## ❌ Error ",
-- Separator between messages
separator = " ",
-- Show help text
show_help = true,
-- Show folds for sections
show_folds = true,
-- Auto-follow cursor in chat window
auto_follow_cursor = true,
-- Auto-insert mode when opening chat
auto_insert_mode = false,
-- Clear chat on new conversation
clear_chat_on_new_prompt = false,
-- Context for conversations
context = nil,
-- Prompts (custom quick actions)
prompts = {
Explain = {
prompt = "/COPILOT_EXPLAIN Write an explanation for the active selection as paragraphs of text.",
},
Review = {
prompt = "/COPILOT_REVIEW Review the selected code.",
},
Fix = {
prompt = "/COPILOT_GENERATE There is a problem in this code. Rewrite the code to show it with the bug fixed.",
},
Optimize = {
prompt = "/COPILOT_GENERATE Optimize the selected code to improve performance and readability.",
},
Docs = {
prompt = "/COPILOT_GENERATE Please add documentation comment for the selection.",
},
Tests = {
prompt = "/COPILOT_GENERATE Please generate tests for my code.",
},
},
}

View File

@@ -0,0 +1,19 @@
return {
"yamatsum/nvim-cursorline",
config = function()
require("nvim-cursorline").setup({
cursorline = {
enable = true,
timeout = 1000,
number = false,
hl = {underline = true}
},
cursorword = {
enable = false,
min_length = 3,
hl = { underline = true },
},
})
end,
}

View File

@@ -0,0 +1,117 @@
-- debug.lua
--
-- Shows how to use the DAP plugin to debug your code.
--
-- Primarily focused on configuring the debugger for Go, but can
-- be extended to other languages as well. That's why it's called
-- kickstart.nvim and not kitchen-sink.nvim ;)
return {
-- NOTE: Yes, you can install new plugins here!
"mfussenegger/nvim-dap",
-- NOTE: And you can specify dependencies as well
dependencies = {
-- Creates a beautiful debugger UI
"rcarriga/nvim-dap-ui",
-- Required dependency for nvim-dap-ui
"nvim-neotest/nvim-nio",
-- Installs the debug adapters for you
"williamboman/mason.nvim",
"jay-babu/mason-nvim-dap.nvim",
-- Add your own debuggers here
"leoluz/nvim-dap-go",
},
keys = function(_, keys)
local dap = require("dap")
local dapui = require("dapui")
return {
-- Basic debugging keymaps, feel free to change to your liking!
{ "<F5>", dap.continue, desc = "Debug: Start/Continue" },
{ "<F1>", dap.step_into, desc = "Debug: Step Into" },
{ "<F2>", dap.step_over, desc = "Debug: Step Over" },
{ "<F3>", dap.step_out, desc = "Debug: Step Out" },
{ "<leader>b", dap.toggle_breakpoint, desc = "Debug: Toggle Breakpoint" },
{
"<leader>B",
function()
dap.set_breakpoint(vim.fn.input("Breakpoint condition: "))
end,
desc = "Debug: Set Breakpoint",
},
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
{ "<F7>", dapui.toggle, desc = "Debug: See last session result." },
unpack(keys),
}
end,
config = function()
local dap = require("dap")
local dapui = require("dapui")
require("mason-nvim-dap").setup({
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
handlers = {},
-- You'll need to check that you have the required things installed
-- online, please don't ask me how to install them :)
ensure_installed = {
-- Update this to ensure that you have the debuggers for the langs you want
"delve",
},
})
-- Dap UI setup
-- For more information, see |:help nvim-dap-ui|
dapui.setup({
-- Set icons to characters that are more likely to work in every terminal.
-- Feel free to remove or use ones that you like more! :)
-- Don't feel like these are good choices.
icons = { expanded = "", collapsed = "", current_frame = "*" },
controls = {
icons = {
pause = "",
play = "",
step_into = "",
step_over = "",
step_out = "",
step_back = "b",
run_last = "▶▶",
terminate = "",
disconnect = "",
},
},
})
-- Change breakpoint icons
-- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' })
-- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' })
-- local breakpoint_icons = vim.g.have_nerd_font
-- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
-- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' }
-- for type, icon in pairs(breakpoint_icons) do
-- local tp = 'Dap' .. type
-- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak'
-- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl })
-- end
dap.listeners.after.event_initialized["dapui_config"] = dapui.open
dap.listeners.before.event_terminated["dapui_config"] = dapui.close
dap.listeners.before.event_exited["dapui_config"] = dapui.close
-- Install golang specific config
require("dap-go").setup({
delve = {
-- On Windows delve must be run attached or it crashes.
-- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
detached = vim.fn.has("win32") == 0,
},
})
end,
}

View File

@@ -0,0 +1,11 @@
return {
{
"ibhagwan/fzf-lua",
-- optional for icon support
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
-- calling `setup` is optional for customization
require("fzf-lua").setup({})
end,
},
}

View File

@@ -0,0 +1,105 @@
-- Adds git related signs to the gutter, as well as utilities for managing changes
return {
{
"lewis6991/gitsigns.nvim",
opts = {
signs = {
add = { text = "+" },
change = { text = "" },
delete = { text = "-" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
},
signs_staged_enable = true,
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
follow_files = true,
},
auto_attach = true,
attach_to_untracked = false,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
virt_text_priority = 100,
},
-- current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
-- current_line_blame_formatter_opts = {
-- relative_time = false,
-- },
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000, -- Disable if file is longer than this (in lines)
preview_config = {
-- Options passed to nvim_open_win
border = "single",
style = "minimal",
relative = "cursor",
row = 0,
col = 1,
},
on_attach = function(bufnr)
utils.load_mappings("gitsigns", { buffer = bufnr })
end,
on_attach = function(bufnr)
local gitsigns = require("gitsigns")
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map("n", "]c", function()
if vim.wo.diff then
vim.cmd.normal({ "]c", bang = true })
else
gitsigns.nav_hunk("next")
end
end, { desc = "Jump to next git [c]hange" })
map("n", "[c", function()
if vim.wo.diff then
vim.cmd.normal({ "[c", bang = true })
else
gitsigns.nav_hunk("prev")
end
end, { desc = "Jump to previous git [c]hange" })
-- Actions
-- visual mode
map("v", "<leader>hs", function()
gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
end, { desc = "stage git hunk" })
map("v", "<leader>hr", function()
gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
end, { desc = "reset git hunk" })
-- normal mode
map("n", "<leader>hs", gitsigns.stage_hunk, { desc = "git [s]tage hunk" })
map("n", "<leader>hr", gitsigns.reset_hunk, { desc = "git [r]eset hunk" })
map("n", "<leader>hS", gitsigns.stage_buffer, { desc = "git [S]tage buffer" })
map("n", "<leader>hu", gitsigns.undo_stage_hunk, { desc = "git [u]ndo stage hunk" })
map("n", "<leader>hR", gitsigns.reset_buffer, { desc = "git [R]eset buffer" })
map("n", "<leader>hp", gitsigns.preview_hunk, { desc = "git [p]review hunk" })
map("n", "<leader>hb", gitsigns.blame_line, { desc = "git [b]lame line" })
map("n", "<leader>hd", gitsigns.diffthis, { desc = "git [d]iff against index" })
map("n", "<leader>hD", function()
gitsigns.diffthis("@")
end, { desc = "git [D]iff against last commit" })
-- Toggles
map("n", "<leader>tb", gitsigns.toggle_current_line_blame, { desc = "[T]oggle git show [b]lame line" })
map("n", "<leader>tD", gitsigns.toggle_deleted, { desc = "[T]oggle git show [D]eleted" })
end,
},
},
}

View File

@@ -0,0 +1,59 @@
return {
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local harpoon = require("harpoon")
harpoon:setup()
vim.keymap.set("n", "<leader>ha", function()
harpoon:list():add()
end, { desc = "Add buffer to harpoon" })
-- vim.keymap.set("n", "<leader>he", function()
-- harpoon.ui:toggle_quick_menu(harpoon:list())
-- end, { desc = "Harpoon List" })
--
vim.keymap.set("n", "<leader>h1", function()
harpoon:list():select(1)
end, { desc = "Harpoon select 1" })
vim.keymap.set("n", "<leader>h2", function()
harpoon:list():select(2)
end, { desc = "Harpoon select 2" })
vim.keymap.set("n", "<leader>h3", function()
harpoon:list():select(3)
end, { desc = "Harpoon select 3" })
vim.keymap.set("n", "<leader>h4", function()
harpoon:list():select(4)
end, { desc = "Harpoon select 4" })
-- Toggle previous & next buffers stored within Harpoon list
vim.keymap.set("n", "<leader>hp", function()
harpoon:list():prev()
end, { desc = "Harpoon previous" })
vim.keymap.set("n", "<leader>hn", function()
harpoon:list():next()
end, { desc = "Harpoon next" })
-- basic telescope configuration
local conf = require("telescope.config").values
local function toggle_telescope(harpoon_files)
local file_paths = {}
for _, item in ipairs(harpoon_files.items) do
table.insert(file_paths, item.value)
end
require("telescope.pickers")
.new({}, {
prompt_title = "Harpoon",
finder = require("telescope.finders").new_table({
results = file_paths,
}),
previewer = conf.file_previewer({}),
sorter = conf.generic_sorter({}),
})
:find()
end
vim.keymap.set("n", "<leader>he", function()
toggle_telescope(harpoon:list())
end, { desc = "Open harpoon window" })
end,
}

View File

@@ -0,0 +1,15 @@
return {
{ -- Add indentation guides even on blank lines
"lukas-reineke/indent-blankline.nvim",
-- Enable `lukas-reineke/indent-blankline.nvim`
-- See `:help ibl`
main = "ibl",
opts = {
indent = {
},
whitespace = {
remove_blankline_trail = false,
},
},
},
}

View File

@@ -0,0 +1,60 @@
return {
{ -- Linting
"mfussenegger/nvim-lint",
event = { "BufReadPre", "BufNewFile" },
config = function()
local lint = require("lint")
lint.linters_by_ft = {
markdown = { "markdownlint" },
}
-- To allow other plugins to add linters to require('lint').linters_by_ft,
-- instead set linters_by_ft like this:
-- lint.linters_by_ft = lint.linters_by_ft or {}
-- lint.linters_by_ft['markdown'] = { 'markdownlint' }
--
-- However, note that this will enable a set of default linters,
-- which will cause errors unless these tools are available:
-- {
-- clojure = { "clj-kondo" },
-- dockerfile = { "hadolint" },
-- inko = { "inko" },
-- janet = { "janet" },
-- json = { "jsonlint" },
-- markdown = { "vale" },
-- rst = { "vale" },
-- ruby = { "ruby" },
-- terraform = { "tflint" },
-- text = { "vale" }
-- }
--
-- You can disable the default linters by setting their filetypes to nil:
-- lint.linters_by_ft['clojure'] = nil
-- lint.linters_by_ft['dockerfile'] = nil
-- lint.linters_by_ft['inko'] = nil
-- lint.linters_by_ft['janet'] = nil
-- lint.linters_by_ft['json'] = nil
-- lint.linters_by_ft['markdown'] = nil
-- lint.linters_by_ft['rst'] = nil
-- lint.linters_by_ft['ruby'] = nil
-- lint.linters_by_ft['terraform'] = nil
-- lint.linters_by_ft['text'] = nil
-- Create autocommand which carries out the actual linting
-- on the specified events.
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
-- Only run the linter in buffers that you can modify in order to
-- avoid superfluous noise, notably within the handy LSP pop-ups that
-- describe the hovered symbol using Markdown.
if vim.opt_local.modifiable:get() then
lint.try_lint()
end
end,
})
end,
},
}

View File

@@ -0,0 +1,229 @@
return {
{
-- Main LSP Configuration
"neovim/nvim-lspconfig",
dependencies = {
-- Automatically install LSPs and related tools to stdpath for Neovim
{ "williamboman/mason.nvim", config = true }, -- NOTE: Must be loaded before dependants
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
-- Useful status updates for LSP.
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
{ "j-hui/fidget.nvim", opts = {} },
-- Allows extra capabilities provided by nvim-cmp
"hrsh7th/cmp-nvim-lsp",
},
config = function()
-- Brief aside: **What is LSP?**
--
-- LSP is an initialism you've probably heard, but might not understand what it is.
--
-- LSP stands for Language Server Protocol. It's a protocol that helps editors
-- and language tooling communicate in a standardized fashion.
--
-- In general, you have a "server" which is some tool built to understand a particular
-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers
-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone
-- processes that communicate with some "client" - in this case, Neovim!
--
-- LSP provides Neovim with features like:
-- - Go to definition
-- - Find references
-- - Autocompletion
-- - Symbol Search
-- - and more!
--
-- Thus, Language Servers are external tools that must be installed separately from
-- Neovim. This is where `mason` and related plugins come into play.
--
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
-- and elegantly composed help section, `:help lsp-vs-treesitter`
-- This function gets run when an LSP attaches to a particular buffer.
-- That is to say, every time a new file is opened that is associated with
-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
-- function will be executed to configure the current buffer
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),
callback = function(event)
-- NOTE: Remember that Lua is a real programming language, and as such it is possible
-- to define small helper and utility functions so you don't have to repeat yourself.
--
-- In this case, we create a function that lets us more easily define mappings specific
-- for LSP related items. It sets the mode, buffer and description for us each time.
local map = function(keys, func, desc, mode)
mode = mode or "n"
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
end
-- Jump to the definition of the word under your cursor.
-- This is where a variable was first declared, or where a function is defined, etc.
-- To jump back, press <C-t>.
map("<leader>gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition")
-- Find references for the word under your cursor.
map("<leader>gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences")
-- Jump to the implementation of the word under your cursor.
-- Useful when your language has ways of declaring types without an actual implementation.
map("<leader>gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation")
-- Jump to the type of the word under your cursor.
-- Useful when you're not sure what type a variable is and you want to see
-- the definition of its *type*, not where it was *defined*.
map("<leader>D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition")
-- Fuzzy find all the symbols in your current document.
-- Symbols are things like variables, functions, types, etc.
map("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols")
-- Fuzzy find all the symbols in your current workspace.
-- Similar to document symbols, except searches over your entire project.
map(
"<leader>ws",
require("telescope.builtin").lsp_dynamic_workspace_symbols,
"[W]orkspace [S]ymbols"
)
-- Rename the variable under your cursor.
-- Most Language Servers support renaming across files, etc.
map("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame")
-- Execute a code action, usually your cursor needs to be on top of an error
-- or a suggestion from your LSP for this to activate.
map("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction", { "n", "x" })
-- WARN: This is not Goto Definition, this is Goto Declaration.
-- For example, in C this would take you to the header.
map("<leader>gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
-- The following two autocommands are used to highlight references of the
-- word under your cursor when your cursor rests there for a little while.
-- See `:help CursorHold` for information about when this is executed
--
-- When you move your cursor, the highlights will be cleared (the second autocommand).
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then
local highlight_augroup =
vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false })
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd("LspDetach", {
group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }),
callback = function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf })
end,
})
end
-- The following code creates a keymap to toggle inlay hints in your
-- code, if the language server you are using supports them
--
-- This may be unwanted, since they displace some of your code
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
map("<leader>th", function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
end, "[T]oggle Inlay [H]ints")
end
end,
})
-- Change diagnostic symbols in the sign column (gutter)
if vim.g.have_nerd_font then
local signs = { Error = "", Warn = "", Hint = "", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
end
-- LSP servers and clients are able to communicate to each other what features they support.
-- By default, Neovim doesn't support everything that is in the LSP specification.
-- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities.
-- So, we create new capabilities with nvim cmp, and then broadcast that to the servers.
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities())
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
--
-- Add any additional override configuration in the following tables. Available keys are:
-- - cmd (table): Override the default command used to start the server
-- - filetypes (table): Override the default list of associated filetypes for the server
-- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
-- - settings (table): Override the default settings passed when initializing the server.
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
local servers = {
clangd = {},
-- gopls = {},
-- pyright = {},
-- rust_analyzer = {},
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
--
-- Some languages (like typescript) have entire language plugins that can be useful:
-- https://github.com/pmizio/typescript-tools.nvim
--
-- But for many setups, the LSP (`ts_ls`) will work just fine
-- ts_ls = {},
--
lua_ls = {
-- cmd = {...},
-- filetypes = { ...},
-- capabilities = {},
settings = {
Lua = {
completion = {
callSnippet = "Replace",
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- diagnostics = { disable = { 'missing-fields' } },
},
},
},
}
-- Ensure the servers and tools above are installed
-- To check the current status of installed tools and/or manually install
-- other tools, you can run
-- :Mason
--
-- You can press `g?` for help in this menu.
require("mason").setup()
-- You can add other tools here that you want Mason to install
-- for you, so that they are available from within Neovim.
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
"stylua", -- Used to format Lua code
})
require("mason-tool-installer").setup({ ensure_installed = ensure_installed })
require("mason-lspconfig").setup({
handlers = {
function(server_name)
local server = servers[server_name] or {}
-- This handles overriding only values explicitly passed
-- by the server configuration above. Useful when disabling
-- certain features of an LSP (for example, turning off formatting for ts_ls)
server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {})
require("lspconfig")[server_name].setup(server)
end,
},
})
end,
},
}

View File

@@ -0,0 +1,50 @@
return {
{
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("lualine").setup({
options = {
icons_enabled = true,
theme = "auto",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
always_show_tabline = true,
globalstatus = false,
refresh = {
statusline = 100,
tabline = 100,
winbar = 100,
},
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = { "filename" },
lualine_x = { "encoding", "fileformat", "filetype" },
lualine_y = { "progress" },
lualine_z = { "location" },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {},
})
end,
},
}

View File

@@ -0,0 +1,39 @@
return {
{ -- Collection of various small independent plugins/modules
"echasnovski/mini.nvim",
config = function()
-- Better Around/Inside textobjects
--
-- Examples:
-- - va) - [V]isually select [A]round [)]paren
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
-- - ci' - [C]hange [I]nside [']quote
-- require("mini.ai").setup({ n_lines = 500 })
-- Add/delete/replace surroundings (brackets, quotes, etc.)
--
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
-- - sd' - [S]urround [D]elete [']quotes
-- - sr)' - [S]urround [R]eplace [)] [']
-- require("mini.surround").setup()
-- require('mini.animate').setup()
-- Simple and easy statusline.
-- You could remove this setup call if you don't like it,
-- and try some other statusline plugin
-- local statusline = require("mini.statusline")
-- set use_icons to true if you have a Nerd Font
-- statusline.setup { use_icons = vim.g.have_nerd_font }
-- You can configure sections in the statusline by overriding their
-- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field
-- statusline.section_location = function()
-- return "%2l:%-2v"
-- end
--
-- Check out: https://github.com/echasnovski/mini.nvim
end,
},
}

View File

@@ -0,0 +1,25 @@
-- Neo-tree is a Neovim plugin to browse the file system
-- https://github.com/nvim-neo-tree/neo-tree.nvim
return {
'nvim-neo-tree/neo-tree.nvim',
version = '*',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
'MunifTanjim/nui.nvim',
},
cmd = 'Neotree',
keys = {
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
},
opts = {
filesystem = {
window = {
mappings = {
['\\'] = 'close_window',
},
},
},
},
}

View File

@@ -0,0 +1,130 @@
return {
{
"folke/noice.nvim",
event = "VeryLazy",
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
"MunifTanjim/nui.nvim",
-- OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
-- "rcarriga/nvim-notify",
},
config = function(_, opts)
require("noice").setup({
cmdline = {
enabled = true, -- enables the Noice cmdline UI
view = "cmdline", -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom
opts = {}, -- global options for the cmdline. See section on views
---@type table<string, CmdlineFormat>
format = {
-- conceal: (default=true) This will hide the text in the cmdline that matches the pattern.
-- view: (default is cmdline view)
-- opts: any options passed to the view
-- icon_hl_group: optional hl_group for the icon
-- title: set to anything or empty string to hide
cmdline = { pattern = "^:", icon = "", lang = "vim" },
search_down = { kind = "search", pattern = "^/", icon = " ", lang = "regex" },
search_up = { kind = "search", pattern = "^%?", icon = " ", lang = "regex" },
filter = { pattern = "^:%s*!", icon = "$", lang = "bash" },
lua = {
pattern = { "^:%s*lua%s+", "^:%s*lua%s*=%s*", "^:%s*=%s*" },
icon = "",
lang = "lua",
},
help = { pattern = "^:%s*he?l?p?%s+", icon = "" },
input = {}, -- Used by input()
-- lua = false, -- to disable a format, set to `false`
},
},
lsp = {
progress = {
enabled = false,
-- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin
-- See the section on formatting for more details on how to customize.
--- @type NoiceFormat|string
format = "lsp_progress",
--- @type NoiceFormat|string
format_done = "lsp_progress_done",
throttle = 1000 / 30, -- frequency to update lsp progress message
view = "mini",
},
override = {
-- override the default lsp markdown formatter with Noice
["vim.lsp.util.convert_input_to_markdown_lines"] = false,
-- override the lsp markdown formatter with Noice
["vim.lsp.util.stylize_markdown"] = false,
-- override cmp documentation with Noice (needs the other options to work)
["cmp.entry.get_documentation"] = false,
},
hover = {
enabled = true,
silent = true, -- set to true to not show a message if hover is not available
view = nil, -- when nil, use defaults from documentation
---@type NoiceViewOptions
opts = {}, -- merged with defaults from documentation
},
signature = {
enabled = false,
auto_open = {
enabled = true,
trigger = true, -- Automatically show signature help when typing a trigger character from the LSP
luasnip = false, -- Will open signature help when jumping to Luasnip insert nodes
throttle = 50, -- Debounce lsp signature help request by 50ms
},
view = nil, -- when nil, use defaults from documentation
---@type NoiceViewOptions
opts = {}, -- merged with defaults from documentation
},
message = {
-- Messages shown by lsp servers
enabled = true,
view = "notify",
opts = {},
},
},
views = {
cmdline_popup = {
position = {
row = "50%",
col = "50%",
},
size = {
width = 50,
height = "auto",
},
},
popupmenu = {
relative = "editor",
position = {
row = 8,
col = "50%",
},
size = {
width = 60,
height = 10,
},
border = {
style = "rounded",
padding = { 0, 1 },
},
win_options = {
winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" },
},
},
},
-- you can enable a preset for easier configuration
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = true, -- add a border to hover docs and signature help
},
})
end,
},
}

View File

@@ -0,0 +1,16 @@
return {
{
"rcarriga/nvim-notify",
config = function()
require("notify").setup({
-- other stuff
background_colour = "#000000",
max_width = "60",
render = "minimal",
timeout = 2000,
top_down = false,
fps = 1,
})
end,
},
}

View File

@@ -0,0 +1,19 @@
return {
{
{
"nvchad/ui",
config = function()
require("nvchad")
end,
},
{
"nvchad/base46",
build = function()
require("base46").load_all_highlights()
end,
},
"nvchad/volt", -- optional, needed for theme switcher
},
}

View File

@@ -0,0 +1,70 @@
return {
{
'NvChad/nvterm',
config = function()
local terminal = require 'nvterm.terminal'
local toggle_modes = { 'n', 't' }
local mappings = {
{
'n',
'<C-l>',
function()
require('nvterm.terminal').send(ft_cmds[vim.bo.filetype])
end,
},
{
toggle_modes,
'<A-h>',
function()
require('nvterm.terminal').toggle 'horizontal'
end,
},
{
toggle_modes,
'<A-v>',
function()
require('nvterm.terminal').toggle 'vertical'
end,
},
{
toggle_modes,
'<A-i>',
function()
require('nvterm.terminal').toggle 'float'
end,
},
}
require('nvterm').setup {
terminals = {
shell = vim.o.shell,
list = {},
type_opts = {
float = {
relative = 'editor',
row = 0.3,
col = 0.25,
width = 0.5,
height = 0.4,
transparent = true,
border = 'single',
},
horizontal = { location = 'rightbelow', split_ratio = 0.3 },
vertical = { location = 'rightbelow', split_ratio = 0.5 },
},
},
behavior = {
autoclose_on_quit = {
enabled = false,
confirm = true,
},
close_on_exit = true,
auto_insert = true,
},
}
for _, mapping in ipairs(mappings) do
vim.keymap.set(mapping[1], mapping[2], mapping[3], opts)
end
end,
},
}

View File

@@ -0,0 +1,196 @@
-- Declare a global function to retrieve the current directory
function _G.get_oil_winbar()
local dir = require("oil").get_current_dir()
if dir then
return vim.fn.fnamemodify(dir, ":~")
else
-- If there is no current directory (e.g. over ssh), just show the buffer name
return vim.api.nvim_buf_get_name(0)
end
end
return {
{
"stevearc/oil.nvim",
lazy = false,
-- Optional dependencies
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("oil").setup({
-- Oil will take over directory buffers (e.g. `vim .` or `:e src/`)
-- Set to false if you still want to use netrw.
default_file_explorer = true,
-- Id is automatically added at the beginning, and name at the end
-- See :help oil-columns
columns = {
"icon",
-- "permissions",
-- "size",
-- "mtime",
reverse = true
},
-- Buffer-local options to use for oil buffers
buf_options = {
buflisted = false,
bufhidden = "hide",
},
-- Window-local options to use for oil buffers
win_options = {
wrap = false,
signcolumn = "no",
winbar = "%!v:lua.get_oil_winbar()",
cursorcolumn = false,
foldcolumn = "0",
spell = false,
list = false,
conceallevel = 3,
concealcursor = "nvic",
},
-- Send deleted files to the trash instead of permanently deleting them (:help oil-trash)
delete_to_trash = false,
-- Skip the confirmation popup for simple operations (:help oil.skip_confirm_for_simple_edits)
skip_confirm_for_simple_edits = false,
-- Selecting a new/moved/renamed file or directory will prompt you to save changes first
-- (:help prompt_save_on_select_new_entry)
prompt_save_on_select_new_entry = false,
-- Oil will automatically delete hidden buffers after this delay
-- You can set the delay to false to disable cleanup entirely
-- Note that the cleanup process only starts when none of the oil buffers are currently displayed
cleanup_delay_ms = 2000,
lsp_file_methods = {
-- Time to wait for LSP file operations to complete before skipping
timeout_ms = 1000,
-- Set to true to autosave buffers that are updated with LSP willRenameFiles
-- Set to "unmodified" to only save unmodified buffers
autosave_changes = false,
},
-- Constrain the cursor to the editable parts of the oil buffer
-- Set to `false` to disable, or "name" to keep it on the file names
constrain_cursor = "editable",
-- Set to true to watch the filesystem for changes and reload oil
experimental_watch_for_changes = false,
-- Keymaps in oil buffer. Can be any value that `vim.keymap.set` accepts OR a table of keymap
-- options with a `callback` (e.g. { callback = function() ... end, desc = "", mode = "n" })
-- Additionally, if it is a string that matches "actions.<name>",
-- it will use the mapping at require("oil.actions").<name>
-- Set to `false` to remove a keymap
-- See :help oil-actions for a list of all available actions
keymaps = {
["g?"] = "actions.show_help",
["<CR>"] = "actions.select",
["<C-s>"] = "actions.select_vsplit",
["<C-h>"] = "actions.select_split",
["<C-t>"] = "actions.select_tab",
["<C-p>"] = "actions.preview",
["<C-c>"] = "actions.close",
["<C-l>"] = "actions.refresh",
["-"] = "actions.parent",
["_"] = "actions.open_cwd",
["`"] = "actions.cd",
["~"] = "actions.tcd",
["gs"] = "actions.change_sort",
["gx"] = "actions.open_external",
["g."] = "actions.toggle_hidden",
["g\\"] = "actions.toggle_trash",
["gd"] = {
desc = "Toggle file detail view",
callback = function()
detail = not detail
if detail then
require("oil").set_columns({ "icon", "permissions", "size", "mtime" })
else
require("oil").set_columns({ "icon" })
end
end,
},
},
-- Configuration for the floating keymaps help window
keymaps_help = {
border = "rounded",
},
-- Set to false to disable all of the above keymaps
use_default_keymaps = true,
view_options = {
-- Show files and directories that start with "."
show_hidden = true,
-- This function defines what is considered a "hidden" file
is_hidden_file = function(name, bufnr)
return vim.startswith(name, ".")
end,
-- This function defines what will never be shown, even when `show_hidden` is set
is_always_hidden = function(name, bufnr)
return false
end,
-- Sort file names in a more intuitive order for humans. Is less performant,
-- so you may want to set to false if you work with large directories.
natural_order = true,
sort = {
-- sort order can be "asc" or "desc"
-- see :help oil-columns to see which columns are sortable
{ "type", "asc" },
{ "name", "asc" },
},
},
-- Configuration for the floating window in oil.open_float
float = {
-- Padding around the floating window
padding = 2,
max_width = 0,
max_height = 0,
border = "rounded",
win_options = {
winblend = 0,
},
-- This is the config that will be passed to nvim_open_win.
-- Change values here to customize the layout
override = function(conf)
return conf
end,
},
-- Configuration for the actions floating preview window
preview = {
-- Width dimensions can be integers or a float between 0 and 1 (e.g. 0.4 for 40%)
-- min_width and max_width can be a single value or a list of mixed integer/float types.
-- max_width = {100, 0.8} means "the lesser of 100 columns or 80% of total"
max_width = 0.9,
-- min_width = {40, 0.4} means "the greater of 40 columns or 40% of total"
min_width = { 40, 0.4 },
-- optionally define an integer/float for the exact width of the preview window
width = nil,
-- Height dimensions can be integers or a float between 0 and 1 (e.g. 0.4 for 40%)
-- min_height and max_height can be a single value or a list of mixed integer/float types.
-- max_height = {80, 0.9} means "the lesser of 80 columns or 90% of total"
max_height = 0.9,
-- min_height = {5, 0.1} means "the greater of 5 columns or 10% of total"
min_height = { 5, 0.1 },
-- optionally define an integer/float for the exact height of the preview window
height = nil,
border = "rounded",
win_options = {
winblend = 0,
},
-- Whether the preview window is automatically updated when the cursor is moved
update_on_cursor_moved = true,
},
-- Configuration for the floating progress window
progress = {
max_width = 0.9,
min_width = { 40, 0.4 },
width = nil,
max_height = { 10, 0.9 },
min_height = { 5, 0.1 },
height = nil,
border = "rounded",
minimized_border = "none",
win_options = {
winblend = 0,
},
},
-- Configuration for the floating SSH window
ssh = {
border = "rounded",
},
})
end,
},
}

View File

@@ -0,0 +1,6 @@
return {
"nvim-lua/plenary.nvim",
"tpope/vim-fugitive",
"nvim-tree/nvim-web-devicons",
"github/copilot.vim",
}

View File

@@ -0,0 +1,29 @@
return {
'kdheepak/tabline.nvim',
config = function()
require'tabline'.setup {
-- Defaults configuration options
enable = true,
options = {
-- If lualine is installed tabline will use separators configured in lualine by default.
-- These options can be used to override those settings.
section_separators = {'', ''},
component_separators = {'', ''},
max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3
show_tabs_always = false, -- this shows tabs only when there are more than one tab or if the first tab is named
show_devicons = true, -- this shows devicons in buffer section
show_bufnr = true, -- this appends [bufnr] to buffer section,
show_filename_only = false, -- shows base filename only instead of relative path in filename
modified_icon = "+ ", -- change the default modified icon
modified_italic = true, -- set to true by default; this determines whether the filename turns italic if modified
show_tabs_only = false, -- this shows only tabs instead of tabs + buffers
}
}
vim.cmd[[
set guioptions-=e " Use showtabline in gui vim
set sessionoptions+=tabpages,globals " store tabpages and globals in session
]]
end,
requires = { { 'hoob3rt/lualine.nvim', opt=true }, {'kyazdani42/nvim-web-devicons', opt = true} }
}

View File

@@ -0,0 +1,221 @@
return {
{ -- Fuzzy Finder (files, lsp, etc)
"nvim-telescope/telescope.nvim",
-- event = 'VimEnter',
-- branch = "0.1.x",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"joshmedeski/telescope-smart-goto.nvim",
"nvim-telescope/telescope-ui-select.nvim",
"nvim-lua/plenary.nvim",
"nanotee/zoxide.vim",
"debugloop/telescope-undo.nvim",
"nvim-telescope/telescope-live-grep-args.nvim",
"nvim-telescope/telescope-fzy-native.nvim",
{
"nvim-telescope/telescope-fzf-native.nvim",
build = "make",
},
"nvim-lua/plenary.nvim",
{ -- If encountering errors, see telescope-fzf-native README for installation instructions
"nvim-telescope/telescope-fzf-native.nvim",
-- `build` is used to run some command when the plugin is installed/updated.
-- This is only run then, not every time Neovim starts up.
build = "make",
-- `cond` is a condition used to determine whether this plugin should be
-- installed and loaded.
cond = function()
return vim.fn.executable("make") == 1
end,
},
{ "nvim-telescope/telescope-ui-select.nvim" },
-- Useful for getting pretty icons, but requires a Nerd Font.
{ "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font },
},
config = function()
-- Telescope is a fuzzy finder that comes with a lot of different things that
-- it can fuzzy find! It's more than just a "file finder", it can search
-- many different aspects of Neovim, your workspace, LSP, and more!
--
-- The easiest way to use Telescope, is to start by doing something like:
-- :Telescope help_tags
--
-- After running this command, a window will open up and you're able to
-- type in the prompt window. You'll see a list of `help_tags` options and
-- a corresponding preview of the help.
--
-- Two important keymaps to use while in Telescope are:
-- - Insert mode: <c-/>
-- - Normal mode: ?
--
-- This opens a window that shows you all of the keymaps for the current
-- Telescope picker. This is really useful to discover what Telescope can
-- do as well as how to actually do it!
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
local open_with_trouble = require("trouble.sources.telescope").open
-- Use this to add more results without clearing the trouble list
local add_to_trouble = require("trouble.sources.telescope").add
local action_layout = require("telescope.actions.layout")
require("telescope").setup({
-- You can put your default mappings / updates / etc. in here
-- All the info you're looking for is in `:help telescope.setup()`
--
defaults = {
vimgrep_arguments = {
"rg",
"-L",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
},
prompt_prefix = "",
layout_strategy = "horizontal",
sorting_strategy = "ascending",
selection_strategy = "reset",
initial_mode = "normal",
layout_config = {
horizontal = {
prompt_position = "top",
preview_width = 0.60,
results_width = 0.8,
},
vertical = {
mirror = false,
},
width = 0.88,
height = 0.80,
preview_cutoff = 120,
},
-- theme = "ivy",
mappings = {
i = {
["<c-enter>"] = "to_fuzzy_refine",
["<A-t>"] = open_with_trouble,
["<A-d>"] = add_to_trouble,
},
n = {
["<A-t>"] = open_with_trouble,
["<A-d>"] = add_to_trouble,
["<C-p>"] = action_layout.toggle_preview,
},
},
buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
},
file_sorter = require("telescope.sorters").get_fuzzy_file,
file_ignore_patterns = { "node_modules" },
generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
path_display = { "truncate" },
winblend = 0,
pickers = {
find_files = {
-- theme = "ivy",
},
help_tags = {
-- theme = "ivy",
},
colorscheme = {
theme = "dropdown",
enable_preview = true,
},
keymap = {
-- theme = "ivy",
theme = "dropdown"
},
oldfiles = {
-- theme = "ivy",
enable_preview = false,
},
buffers = {
-- theme = "ivy",
enable_preview = false,
},
git_status = {
-- theme = "ivy",
},
git_commit = {
-- theme = "ivy",
}
},
-- pickers = {}
extensions = {
fzf = {
fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
-- the default case_mode is "smart_case"
},
["ui-select"] = {
require("telescope.themes").get_ivy(),
},
},
})
-- Enable Telescope extensions if they are installed
pcall(require("telescope").load_extension, "fzf")
pcall(require("telescope").load_extension, "ui-select")
pcall(require("telescope").load_extension, "man_pages")
-- See `:help telescope.builtin`
local builtin = require("telescope.builtin")
local actions = require("telescope.actions")
vim.keymap.set("n", "<leader>s?", builtin.help_tags, { desc = "Help" })
vim.keymap.set("n", "<leader>sk", builtin.keymaps, { desc = "[k]eymaps" })
vim.keymap.set("n", "<leader>sf", builtin.find_files, { desc = "[f]iles" })
vim.keymap.set("n", "<leader>so", builtin.oldfiles, { desc = "[o]ld Files" })
vim.keymap.set("n", "<leader>ss", builtin.builtin, { desc = "[s]elect Telescope" })
vim.keymap.set("n", "<leader>sw", builtin.grep_string, { desc = "current [w]ord" })
vim.keymap.set("n", "<leader>sg", builtin.live_grep, { desc = "[g]rep" })
vim.keymap.set("n", "<leader>sd", builtin.lsp_document_symbols, { desc = "[d]ocument symbols" })
vim.keymap.set("n", "<leader>sW", builtin.lsp_workspace_symbols, { desc = "[W]workspace symbols" })
vim.keymap.set("n", "<leader>sr", builtin.lsp_references, { desc = "[r]eferences" })
vim.keymap.set("n", "<leader>sD", builtin.diagnostics, { desc = "[D]iagnostics" })
vim.keymap.set("n", "<leader>sr", builtin.resume, { desc = "[r]esume" })
vim.keymap.set("n", "<leader>sb", builtin.buffers, { desc = "Find existing [B]uffers" })
vim.keymap.set("n", "<leader>sc", builtin.current_buffer_fuzzy_find, { desc = "Find current buffers" })
vim.keymap.set("n", "<leader>sS", builtin.git_status, { desc = "Git [S]tatus" })
vim.keymap.set("n", "<leader>sC", builtin.git_commits, { desc = "Git [C]ommit" })
vim.keymap.set("n", "<leader>sG", builtin.git_files, { desc = "Git file" })
vim.keymap.set("n", "<leader>sM", builtin.man_pages, { desc = "[M]anPages" })
vim.keymap.set("n", "<leader>sm", builtin.marks, { desc = "[m]arks" })
vim.keymap.set("n", "<leader>sR", builtin.registers, { desc = "[R]egisters" })
-- Slightly advanced example of overriding default behavior and theme
vim.keymap.set("n", "<leader>sz", function()
-- You can pass additional configuration to Telescope to change the theme, layout, etc.
builtin.current_buffer_fuzzy_find(require("telescope.themes").get_ivy({
winblend = 10,
previewer = false,
}))
end, { desc = "[/] Fuzzily search in current buffer" })
-- It's also possible to pass additional configuration options.
-- See `:help telescope.builtin.live_grep()` for information about particular keys
vim.keymap.set("n", "<leader>t/", function()
builtin.live_grep({
grep_open_files = true,
prompt_title = "Live Grep in Open Files",
})
end, { desc = "[S]earch [/] in Open Files" })
-- Shortcut for searching your Neovim configuration files
vim.keymap.set("n", "<leader>tn", function()
builtin.find_files({ cwd = vim.fn.stdpath("config") })
end, { desc = "[S]earch [N]eovim files" })
vim.keymap.set("n", "<leader>tc", "<cmd>Telescope themes <CR>", { desc = "Color scheme" })
end,
},
}

View File

@@ -0,0 +1,8 @@
return {
{
"folke/todo-comments.nvim",
event = "VimEnter",
dependencies = { "nvim-lua/plenary.nvim" },
opts = { signs = false },
},
}

View File

@@ -0,0 +1,46 @@
return {
{
"xiyaowong/transparent.nvim",
groups = {
"Normal",
"NormalNC",
"Comment",
"Constant",
"Special",
"Identifier",
"Statement",
"PreProc",
"Type",
"Underlined",
"Todo",
"String",
"Function",
"Conditional",
"Repeat",
"Operator",
"Structure",
"LineNr",
"NonText",
"SignColumn",
"CursorLine",
"CursorLineNr",
"StatusLine",
"StatusLineNC",
"Telescope",
"EndOfBuffer",
},
config = true,
-- table: additional groups that should be cleared
extra_groups = {
"NormalFloat", -- plugins which have float panel such as Lazy, Mason, LspInfo
"NvimTreeNormal", -- NvimTree
"Telescope",
},
-- table: groups you don't want to clear
exclude_groups = {},
-- function: code to be executed after highlight groups are cleared
-- Also the user event "TransparentClear" will be triggered
on_clear = function() end,
},
}

View File

@@ -0,0 +1,40 @@
return {
{ -- Highlight, edit, and navigate code
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
main = "nvim-treesitter.configs", -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = {
ensure_installed = {
"bash",
"c",
"diff",
"html",
"lua",
"luadoc",
"markdown",
"markdown_inline",
"query",
"vim",
"vimdoc",
},
-- Autoinstall languages that are not installed
auto_install = true,
highlight = {
enable = true,
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
-- If you are experiencing weird indenting issues, add the language to
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
additional_vim_regex_highlighting = { "ruby" },
use_languagetree = true,
},
indent = { enable = true, disable = { "ruby" } },
},
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
},
}

View File

@@ -0,0 +1,28 @@
return {
{
"folke/trouble.nvim",
opts = {
}, -- for default options, refer to the configuration section for custom setup.
cmd = "Trouble",
keys = {
{
"<leader>tt",
function()
require("trouble").toggle()
end,
desc = "Trouble toggle",
},
{
"[t",
"<cmd> cnext<CR>",
desc = "Trouble next"
},
{
"]t",
"<cmd> cprev<CR>",
desc = "Touble previous",
},
},
},
}

View File

@@ -0,0 +1,6 @@
return {
"mbbill/undotree",
config = function()
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
end,
}

View File

@@ -0,0 +1,55 @@
return {
{ -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
opts = {
icons = {
-- set icon mappings to true if you have a Nerd Font
mappings = vim.g.have_nerd_font,
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
-- default whick-key.nvim defined Nerd Font icons, otherwise define a string table
keys = vim.g.have_nerd_font and {} or {
Up = '<Up> ',
Down = '<Down> ',
Left = '<Left> ',
Right = '<Right> ',
C = '<C-…> ',
M = '<M-…> ',
D = '<D-…> ',
S = '<S-…> ',
CR = '<CR> ',
Esc = '<Esc> ',
ScrollWheelDown = '<ScrollWheelDown> ',
ScrollWheelUp = '<ScrollWheelUp> ',
NL = '<NL> ',
BS = '<BS> ',
Space = '<Space> ',
Tab = '<Tab> ',
F1 = '<F1>',
F2 = '<F2>',
F3 = '<F3>',
F4 = '<F4>',
F5 = '<F5>',
F6 = '<F6>',
F7 = '<F7>',
F8 = '<F8>',
F9 = '<F9>',
F10 = '<F10>',
F11 = '<F11>',
F12 = '<F12>',
},
},
-- Document existing key chains
spec = {
{ '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
{ '<leader>d', group = '[D]ocument' },
{ '<leader>r', group = '[R]ename' },
{ '<leader>s', group = '[S]earch' },
{ '<leader>w', group = '[W]orkspace' },
{ '<leader>t', group = '[T]oggle' },
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
},
},
},
}

174
nvim/lua/mapping.lua Normal file
View File

@@ -0,0 +1,174 @@
local map = vim.keymap.set
local opts = { noremap = true, silent = true }
map("n", "<Esc>", "<cmd>nohlsearch<CR>")
-- Diagnostic keymaps
-- map("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" })
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
-- is not what someone will guess without a bit more experience.
--
-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
-- or just use <C-\><C-n> to exit terminal mode
map("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
map("n", "<leader>-", "<cmd>Oil <CR>", { desc = "Open parent directory" })
-- Create a new buffer
map("n", "<leader>b", "<cmd> enew <CR>", { desc = "new buffer" })
map("n", "<leader>U", "<cmd> Telescope undo<CR>", { desc = "Telescope Undo" })
-- Toggle comment
map("n", "<leader>/", function()
require("Comment.api").toggle.linewise.current()
end, { desc = "Toggle comment line" })
map("n", "<leader>cb", function()
require("Comment.api").toggle.blockwise.current()
end, { desc = "Toggle comment block" })
map(
"v",
"<leader>/",
"<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
{ desc = "Toggle comment line" }
)
map("n", "<leader>cr", "<cmd>!cc -g % -o %:r && ./%:r<CR>", { desc = "Compile and run C code" })
-- ============================================
-- GitHub Copilot Keybindings
-- ============================================
-- Copilot suggestions (in insert mode)
-- Note: These are handled by the plugin config above, but listed here for reference
-- <M-l> Accept suggestion (Alt+l)
-- <M-]> Next suggestion (Alt+])
-- <M-[> Previous suggestion (Alt+[)
-- <C-]> Dismiss suggestion (Ctrl+])
-- Copilot Chat - Quick Actions
map("n", "<leader>jj", "<cmd>CopilotChatToggle<CR>", { desc = "Toggle Copilot Chat" })
map("n", "<leader>jo", "<cmd>CopilotChat<CR>", { desc = "Open Copilot Chat" })
map("n", "<leader>jx", "<cmd>CopilotChatClose<CR>", { desc = "Close Copilot Chat" })
map("n", "<leader>jr", "<cmd>CopilotChatReset<CR>", { desc = "Reset Chat History" })
-- Copilot Chat - Code Actions (work in normal and visual mode)
map({ "n", "v" }, "<leader>je", "<cmd>CopilotChatExplain<CR>", { desc = "Explain Code" })
map({ "n", "v" }, "<leader>jt", "<cmd>CopilotChatTests<CR>", { desc = "Generate Tests" })
map({ "n", "v" }, "<leader>jf", "<cmd>CopilotChatFix<CR>", { desc = "Fix Code" })
map({ "n", "v" }, "<leader>jO", "<cmd>CopilotChatOptimize<CR>", { desc = "Optimize Code" })
map({ "n", "v" }, "<leader>jd", "<cmd>CopilotChatDocs<CR>", { desc = "Generate Documentation" })
map({ "n", "v" }, "<leader>jV", "<cmd>CopilotChatReview<CR>", { desc = "Review Code" })
-- Copilot Chat - Git Integration
map("n", "<leader>jc", "<cmd>CopilotChatCommit<CR>", { desc = "Generate Commit Message" })
map("n", "<leader>jC", "<cmd>CopilotChatCommitStaged<CR>", { desc = "Commit Message (Staged)" })
-- Copilot Chat - Quick Question
map("n", "<leader>jq", function()
local input = vim.fn.input("Quick Chat: ")
if input ~= "" then
require("CopilotChat").ask(input)
end
end, { desc = "Quick Question to Copilot" })
-- Copilot Chat - Visual Mode
map("v", "<leader>jv", ":CopilotChatVisual ", { desc = "Chat with Selection" })
map("v", "<leader>ji", ":CopilotChatInline<CR>", { desc = "Inline Chat" })
-- Copilot Chat - Buffer Context
map("n", "<leader>jb", function()
local input = vim.fn.input("Ask Copilot (Buffer Context): ")
if input ~= "" then
require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer })
end
end, { desc = "Ask About Entire Buffer" })
-- Copilot Chat - Diagnostic Help
map("n", "<leader>jD", function()
require("CopilotChat").ask("Help with diagnostics", {
selection = require("CopilotChat.select").diagnostics,
})
end, { desc = "Fix Diagnostics with Copilot" })
-- Copilot Panel Toggle (alternative suggestion view)
map("n", "<leader>jp", "<cmd>Copilot panel<CR>", { desc = "Open Copilot Panel" })
-- line numbers
map("n", "<leader>nn", "<cmd> set nu! <CR>", { desc = "Toggle line number" })
map("n", "<leader>nr", "<cmd> set rnu! <CR>", { desc = "Toggle relative number" })
-- TIP: Disable arrow keys in normal mode
map("n", "<left>", '<cmd>echo "Use h to move!!"<CR>')
map("n", "<right>", '<cmd>echo "Use l to move!!"<CR>')
map("n", "<up>", '<cmd>echo "Use k to move!!"<CR>')
map("n", "<down>", '<cmd>echo "Use j to move!!"<CR>')
map("n", "<leader>wk", "<cmd>WhichKey<CR>", { desc = "Which-Key all keymaps" })
map("n", "<leader>wK", function()
local input = vim.fn.input("WhichKey: ")
vim.cmd("WhichKey" .. input)
end, { desc = "Which-Key query lookup" })
map("n", "<leader>gs", "<cmd>Git status<CR>", { desc = "Git status" })
-- Keybinds to make split navigation easier.
-- Use CTRL+<hjkl> to switch between windows
--
-- See `:help wincmd` for a list of all window commands
map("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
map("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
map("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
map("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
map("n", "<S-tab>", function()
require("nvchad.tabufline").prev()
end, opts)
map("n", "<tab>", function()
require("nvchad.tabufline").next()
end, opts)
map("n", "<leader>q", function()
require("nvchad.tabufline").close_buffer()
end, opts)
map("n", "<A-j>", "<cmd>:m .+1<CR>==", opts)
map("n", "<A-k>", "<cmd>:m .-2<CR>==", opts)
map("i", "<A-j>", "<ESC><cmd>:m .+1<CR>==gi", opts)
map("i", "<A-k>", "<ESC><cmd>:m .-2<CR>==gi", opts)
map("v", "<A-j>", ":m '>+1<CR>gv=gv", opts)
map("v", "<A-k>", ":m '<-2<CR>gv=gv", opts)
map("n", "<leader>cc", function()
local ok, start = require("indent_blankline.utils").get_current_context(
vim.g.indent_blankline_context_patterns,
vim.g.indent_blankline_use_treesitter_scope
)
if ok then
vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start, 0 })
vim.cmd([[normal! _]])
end
end, { desc = "Jump to current context" })
-- greatest remap ever
map("x", "<leader>p", [["_dP]])
map("n", "<leader>xx", "<cmd>!chmod +x %<CR>", { silent = true })
map("i", "<C-c>", "<Esc>", opts)
-- next greatest remap ever : asbjornHaland
map({ "n", "v" }, "<leader>y", [["+y]])
vim.keymap.set("n", "Q", "<nop>")
vim.keymap.set("n", "Q!", "<nop>")
vim.keymap.set("n", "Wq", "<nop>")
map("n", "<leader>Y", [["+Y]])
map("n", "<leader>C", "<cmd> Cheat <CR>")
map("n", "<leader>fa", "<cmd> lua require('fzf-lua').files() <CR>", { desc = "FZF find files" })
map("n", "<leader>ff", "<cmd> lua require('fzf-lua').files() <CR>", { desc = "FZF find files" })
map("n", "<leader>fq", "<cmd> lua require('fzf-lua').quickfix() <CR>", { desc = "FZF quickfix" })
map("n", "<leader>fb", "<cmd> lua require('fzf-lua').buffers() <CR>", { desc = "FZF find buffers" })
map("n", "<leader>fZ", "<cmd> lua require('fzf-lua').lgerp_curbuf() <CR>", { desc = "FZF Live grep current buffer" })
map("n", "<leader>fd", "<cmd> lua require('fzf-lua').oldfiles() <CR>", { desc = "FZF opened files history" })
map("n", "<leader>fm", "<cmd> lua require('fzf-lua').marks() <CR>", { desc = "FZF marks" })
map("n", "<leader>fw", "<cmd> lua require('fzf-lua').live_grep() <CR>", { desc = "FZF live grep" })
map("n", "<leader>fg", "<cmd> lua require('fzf-lua').git_Commits() <CR>", { desc = "FZF Git commits" })
map("n", "<leader>fG", "<cmd> lua require('fzf-lua').git_bcommits() <CR>", { desc = "FZF Git commits" })
map("n", "<leader>fs", "<cmd> lua require('fzf-lua').git_status() <CR>", { desc = "FZF Git commits" })
map("n", "<leader>fp", "<cmd> lua require('fzf-lua').manpages() <CR>", { desc = "FZF Manpages" })

34
nvim/lua/utils.lua Normal file
View File

@@ -0,0 +1,34 @@
-- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode
-- See `:help vim.highlight.on_yank()`
vim.api.nvim_create_autocmd("TextYankPost", {
desc = "Highlight when yanking (copying) text",
group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }),
callback = function()
vim.highlight.on_yank()
end,
})
-- vim.api.nvim_create_autocmd("ModeChanged", {
-- desc = "Clear highlight when entering visual mode",
-- group = vim.api.nvim_create_augroup("visualmode-hlsearch", {}),
-- callback = function()
-- vim.cmd("nohlsearch")
-- end,
-- })
-- Reopen vim at the last location in the buffer
local lastplace = vim.api.nvim_create_augroup("LastPlace", {})
vim.api.nvim_clear_autocmds({ group = lastplace })
vim.api.nvim_create_autocmd("BufReadPost", {
group = lastplace,
pattern = { "*" },
desc = "remember last cursor place",
callback = function()
local mark = vim.api.nvim_buf_get_mark(0, '"')
local lcount = vim.api.nvim_buf_line_count(0)
if mark[1] > 0 and mark[1] <= lcount then
pcall(vim.api.nvim_win_set_cursor, 0, mark)
end
end,
})

9
scripts/nvim-fzf.sh Executable file
View File

@@ -0,0 +1,9 @@
fd --hidden --exclude .git | fzf-tmux -p --preview 'fzf-preview.sh {}' --multi \
--color=fg:-1,fg+:#d0d0d0,bg:-1,bg+:#262626 \
--color=hl:#5f87af,hl+:#5fd7ff,info:#afaf87,marker:#87ff00 \
--color=prompt:#d7005f,spinner:#af5fff,pointer:#af5fff,header:#87afaf \
--color=border:#262626,label:#aeaeae,query:#d9d9d9 \
--border="rounded" \
--border-label="" --preview-window="border-rounded" --prompt="> " \
--info="inline" --marker=">" --pointer="◆" --separator="─" --scrollbar="│" \
| xargs nvim

7
scripts/popuptmux.sh Executable file
View File

@@ -0,0 +1,7 @@
width=${2:-80%}
height=${2:-80%}
if [ "$(tmux display-message -p -F "#{session_name}")" = "popup" ];then
tmux detach-client
else
tmux popup -d '#{pane_current_path}' -xC -yC -w$width -h$height -K -E -R "tmux attach -t popup || tmux new -s popup"
fi

2
scripts/rename-pane.sh Executable file
View File

@@ -0,0 +1,2 @@
name=$1
tmux select-pane -T $name

25
scripts/tmux-sessionizer.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
if [[ $# -eq 1 ]]; then
selected=$1
else
selected=$(find ~/ /localdisk -mindepth 1 -maxdepth 1 -type d | fzf)
fi
if [[ -z $selected ]]; then
exit 0
fi
selected_name=$(basename "$selected" | tr . _)
tmux_running=$(pgrep tmux)
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
tmux new-session -s $selected_name -c $selected
exit 0
fi
if ! tmux has-session -t=$selected_name 2> /dev/null; then
tmux new-session -ds $selected_name -c $selected
fi
tmux switch-client -t $selected_name

52
sh_ciena Executable file
View File

@@ -0,0 +1,52 @@
#---------------------------------- Alias -----------------------------------------
alias gsim-gui='/opt/tools/bin/gsim-gui'
alias devops-legacy='source /opt/tools/bin/6500-devops activate'
alias st="ssh 10.185.100.64"
#--------------------------------- Exports ---------------------------------------
export PATH=/opt/tools/bin/:$PATH
export PATH=/opt/tools/swtools/omeBaseTools/latest/:$PATH
export PATH=/localdisk/archive/git-cheat/:$PATH
export PATH=$HOME/toolkit/bin/:$PATH
export PATH=/home/sarjain/.cargo/bin:$PATH
export PATH=/nfs/projects/verif/ome/automain:$PATH
export PATH=/home/sarjain/scripts/:$PATH
export PATH=/home/sarjain/.local/bin/:$PATH
export PATH=/localdisk/usr/neovim/bin/:$PATH
export NTCADHOME=/opt/tools
export PATH=/usr/lab/bin:/localdisk/pne6.9/trunk/components/windml-5.3/host/x86-linux2/bin:/localdisk/pne6.9/trunk/components/webservices-1.8/host/x86-linux2/bin:/localdisk/pne6.9/trunk/components/wrll-wrsnmp/packages/wrsnmp-10.3/host/x86-linux2/bin:/localdisk/pne6.9/trunk/components/webcli-4.9/host/x86-linux2/bin:/localdisk/pne6.9/trunk/components/ip_net2-6.9/host/x86-linux2/bin:/localdisk/pne6.9/trunk/vxworks-6.9//host/x86-linux2/bin:/localdisk/pne6.9/trunk/vxworks-6.9//vxtest/src/scripts:/localdisk/pne6.9/trunk/vxworks-6.9//host/binutils/x86-linux2/bin:/localdisk/pne6.9/trunk:/localdisk/pne6.9/trunk/utilities-1.0/x86-linux2/bin:/localdisk/pne6.9/trunk/workbench-3.3/foundation/x86-linux2/bin:/localdisk/pne6.9/trunk/workbench-3.3/wrsysviewer/host/x86-linux2/bin:/localdisk/pne6.9/trunk/workbench-3.3/wrwb/platform/x86-linux2/eclipse:/localdisk/pne6.9/trunk/workbench-3.3/analysis/host/bin/x86-linux2:/localdisk/pne6.9/trunk/workbench-3.3/x86-linux2/bin:/localdisk/pne6.9/trunk/lmapi-5.0/x86-linux2/bin:/opt/tools/wh/dtd/RHE-5/wr_vxworks_gnu/4.3.3-vxworks-6.9/x86-linux2/bin:/localdisk/pne6.9/trunk/intel/20110124-vxworks-6.9/x86-linux2/bin/ia32:/opt/tools/wh/dtd/RHE-5/wr_vxworks_diab/5.9.1.0/diab/5.9.1.0/LINUX386/bin:/opt/tools/swtools/anaconda/6500/envs/linux-64/devops/bin:/opt/tools/swtools/6500/devutils/bin:/opt/tools/bin:/opt/tools/swtools/anaconda_envs/linux-64/devops/bin:/opt/tools/swtools/anaconda/pftools/condabin:/opt/vulcan/tools/equinox/latest/bin:/opt/vulcan/tools/vulcanbase/0.80/bin:/home/npawar/bin:/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/tools/swtools/omeBaseTools/latest:/opt/rational/clearcase/bin:/nfs/projects/cmtools/neu/bin:/nfs/projects/cmtools/bin:/usr/lab/bin:/nfs/projects/equinox/insight/SSIM/latest/bin:/nfs/projects/om_swdev/vkdbg/bin:/nfs/projects/verif/ome/automain:/nfs/projects/equinox/bin:/nfs/projects/aladdin/bin:/nfs/projects/pegasus/bin:/opt/mce/bin:/usr/pde/bin:/nfs/projects/equinox/fast_desktop_analysis/bin:$PATH
export PATH=/home/sarjain/usr/lab/bin/:$PATH
export PATH=/home/sarjain/.local/bin/:$PATH
export PATH=/home/sarjain/.local/neovim/bin/:$PATH
#------
# Check if the current shell is Bash
if [[ -n "$BASH_VERSION" ]]; then
source /opt/tools/swtools/git-completion/git-completion.bash #added by 6500gitsetup
source /opt/tools/bin/go-devops
#--------------------------------- Set bash prompt -------------------------------
# export PS1="\e[1;32m\h\e[0m:\e[1;34m\w\e[0m\n$ "
#
#
#--- DevOps Shell
eval "$(starship init bash)"
fi
if [[ -n "$ZSH_VERSION" ]]; then
bash -c 'source /opt/tools/bin/go-devops && env' | while IFS='=' read -r key value; do
if [[ "$key" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
export "$key=$value"
fi
done
bash -c 'source /opt/tools/swtools/git-completion/git-completion.bash && env' | while IFS='=' read -r key value; do
if [[ "$key" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
export "$key=$value"
fi
done
fi

145
sh_personal Normal file
View File

@@ -0,0 +1,145 @@
#
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias tmux='tmux -u'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
#---------------------------------- Alias -----------------------------------------
alias tmux='tmux -u'
alias clear="TERM=xterm /usr/bin/clear"
alias cht="cht.sh"
# alias ls="lsd"
alias ls="eza --group-directories-first --icons"
alias lt="eza --group-directories-first --icons -T -L1"
alias ll="ls -lagh"
alias bless="bat --paging=auto"
alias rename-pane="~/dotfiles/scripts/rename-pane.sh"
alias ranger="~/.local/bin/ranger/ranger.py"
alias cat="bat -pf"
alias gl="git log"
alias gC="git commit"
alias gCa="git commit --amend"
alias gs='git status '
alias ga='git add '
alias gb='git branch '
alias gd='git diff'
alias gc='git checkout '
alias go="git log --oneline"
alias gk='gitk --all&'
alias gn="git log -n2"
alias f="fzf --preview 'fzf-preview.sh {}'"
alias t="fzf-tmux"
alias tfn="~/scripts/nvim-fzf.sh"
#--------------------------------- Exports ---------------------------------------
export STARSHIP_CONFIG_BACKGROUND_COLOR="dark"
export EDITOR='nvim'
# export MANPAGER="sh -c 'col -bx | bat -l man -pfn --paging always'"
# export MANPAGER='nvim +Man!'
export MANROFFOPT="-c"
# Key bindings
# bind '"\C-f":"tmux-sessionizer\n"'
#
# if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then
# tmux attach-session -t 0|| tmux new-session -s 0
# fi
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
# --------------------------------- Starship --------------------------------------
if [[ -n "$BASH_VERSION" ]]; then
eval "$(starship init bash)"
fi
# colorscript -r
# neofetch

82
starship.toml Normal file
View File

@@ -0,0 +1,82 @@
format = """
$username$hostname$directory$git_branch$git_state$git_status$cmd_duration$line_break\
$character"""
# Wait 10 milliseconds for starship to check files under the current directory.
scan_timeout = 10
# Disable the blank line at the start of the prompt
add_newline = true
# # Define custom colors
# [palettes.foo]
# # Overwrite existing color
# blue = '21'
# # Define new color
# mustard = '#af8700'
[directory]
style = "purple"
truncation_length = 3
format = ': [$path]($style)[$read_only]($read_only_style) '
truncation_symbol = ".../"
truncate_to_repo =true
[character]
success_symbol = '[](bold green)'
# success_symbol = '[➜](bold green)'
error_symbol = '[✗](bold purple) '
vimcmd_symbol = "[](green)"
[git_branch]
symbol = '🌱 '
# truncation_length = 4
truncation_symbol = ''
format = '[$symbol$branch]($style) '
[git_status]
conflicted = '🏳'
ahead = '🏎💨'
behind = '😰'
diverged = '😵'
up_to_date = '✓'
untracked = '🤷'
stashed = '📦'
modified = '📝'
staged = '[++\($count\)](green)'
renamed = '👅'
deleted = '🗑'
[git_state]
format = '[\($state( $progress_current of $progress_total)\)]($style) '
cherry_pick = '[🍒 PICKING](bold red)'
[cmd_duration]
min_time = 100
format = 'underwent [$duration](bold yellow)'
[os]
disabled = false
[username]
style_user = 'white bold'
style_root = 'black bold'
format = '[$user]($style) '
disabled = false
show_always = true
[hostname]
ssh_only = false
format = '@(bold blue) [$hostname](bold red) '
trim_at = '.ciena.com'
disabled = false
[status]
style = 'bg:blue'
symbol = '🔴 '
success_symbol = '🟢 SUCCESS'
format = '[\[$symbol$common_meaning$signal_name$maybe_int\]]($style) '
map_symbol = true
disabled = false
[conda]
format = "[$symbol$environment]($style) "

79
starship/starship.toml Executable file
View File

@@ -0,0 +1,79 @@
format = """
$username$hostname$directory$git_branch$git_state$git_status$cmd_duration$line_break\
$character"""
# Wait 10 milliseconds for starship to check files under the current directory.
scan_timeout = 1
# Disable the blank line at the start of the prompt
add_newline = true
# # Define custom colors
# [palettes.foo]
# # Overwrite existing color
# blue = '21'
# # Define new color
# mustard = '#af8700'
[directory]
style = "purple"
truncation_length = 3
format = ': [$path]($style)[$read_only]($read_only_style) '
truncation_symbol = ".../"
truncate_to_repo =true
[character]
success_symbol = '[](bold green)'
# success_symbol = '[➜](bold green)'
error_symbol = '[✗](bold purple) '
vimcmd_symbol = "[](green)"
[git_branch]
symbol = '🌱 '
# truncation_length = 4
truncation_symbol = ''
format = '[$symbol$branch]($style) '
[git_status]
conflicted = '🏳'
ahead = '🏎💨'
behind = '😰'
diverged = '😵'
up_to_date = '✓'
untracked = '🤷'
stashed = '📦'
modified = '📝'
staged = '[++\($count\)](green)'
renamed = '👅'
deleted = '🗑'
[git_state]
format = '[\($state( $progress_current of $progress_total)\)]($style) '
cherry_pick = '[🍒 PICKING](bold red)'
[cmd_duration]
min_time = 100
format = 'underwent [$duration](bold yellow)'
[os]
disabled = false
[username]
style_user = 'white bold'
style_root = 'black bold'
format = '[$user]($style) '
disabled = false
show_always = true
[hostname]
ssh_only = false
format = '@(bold blue) [$hostname](bold red) '
trim_at = '.ciena.com'
disabled = false
[status]
style = 'bg:blue'
symbol = '🔴 '
success_symbol = '🟢 SUCCESS'
format = '[\[$symbol$common_meaning$signal_name$maybe_int\]]($style) '
map_symbol = true
disabled = false

1738
tmux/.tmux.conf Normal file

File diff suppressed because it is too large Load Diff

31
tmux/.tmux.conf.colors Normal file
View File

@@ -0,0 +1,31 @@
# default theme
tmux_conf_theme_colour_1="#080808" # dark gray
tmux_conf_theme_colour_2="#303030" # gray
tmux_conf_theme_colour_3="#8a8a8a" # light gray
tmux_conf_theme_colour_4="#00afff" # light blue
tmux_conf_theme_colour_5="#ffff00" # yellow
tmux_conf_theme_colour_6="#080808" # dark gray
tmux_conf_theme_colour_7="#e4e4e4" # white
tmux_conf_theme_colour_8="#080808" # dark gray
tmux_conf_theme_colour_9="#ffff00" # yellow
tmux_conf_theme_colour_10="#ff00af" # pink
tmux_conf_theme_colour_11="#5fff00" # green
tmux_conf_theme_colour_12="#8a8a8a" # light gray
tmux_conf_theme_colour_13="#e4e4e4" # white
tmux_conf_theme_colour_14="#080808" # dark gray
tmux_conf_theme_colour_15="#080808" # dark gray
tmux_conf_theme_colour_16="#d70000" # red
tmux_conf_theme_colour_17="#e4e4e4" # white
color_yellow="#f9e2af"
color_red="#f38ba8"
color_green="#C9E9D2"
color_teal="#C9DABF"
color_white="#cdd6f4"
color_pink="#f5c2e7"
color_black="#11111b"
color_blue='#789DBC'
color_mauve="#FFE3E3"
color_offwhite="#FEF9F2"

500
tmux/.tmux.conf.local Normal file
View File

@@ -0,0 +1,500 @@
# : << EOF
# -- bindings ------------------------------------------------------------------
# preserve tmux stock bindings,
# while adding bindings that don't conflict with these stock bindings
# /!\ this disables some of Oh my tmux! bindings described in README.md
# - true
# - false (default)
tmux_conf_preserve_stock_bindings=false
# -- session creation ----------------------------------------------------------
# prompt for session name when creating a new session, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-session bindings)
tmux_conf_new_session_prompt=true
# new session retains current path, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-session bindings)
tmux_conf_new_session_retain_current_path=false
# -- windows & pane creation ---------------------------------------------------
# new window retains current path, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-window bindings)
tmux_conf_new_window_retain_current_path=false
# new window tries to reconnect ssh sessions, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-window bindings)
tmux_conf_new_window_reconnect_ssh=false
# new pane retains current path, possible values are:
# - true (default)
# - false
# - disabled (do not modify split-window bindings)
tmux_conf_new_pane_retain_current_path=true
# new pane tries to reconnect ssh sessions, possible values are:
# - true
# - false (default)
# - disabled (do not modify split-window bindings)
tmux_conf_new_pane_reconnect_ssh=false
# -- display -------------------------------------------------------------------
# RGB 24-bit colour support, possible values are:
# - true
# - false
# - auto (default)
#
# automatic detection relies on the COLORTERM environment variable being defined
# to 'truecolor' or '24bit' or '$ tput colors' answering '16777216'
# see https://github.com/termstandard/colors
tmux_conf_24b_colour=auto
# -- theming -------------------------------------------------------------------
# enable or disable theming:
# - enabled (default)
# - disabled
# when disabled, all tmux_conf_theme_xxx variables are ignored except:
# - tmux_conf_theme_pairing
# - tmux_conf_theme_prefix
# - tmux_conf_theme_mouse
# - tmux_conf_theme_root
# - tmux_conf_theme_synchronized
tmux_conf_theme=enabled
# color_yellow="#FCDE70"
color_yellow="yellow"
# color_red="#D91656"
color_reg="red"
# color_green="#85A947"
color_green="green"
# color_teal="#219B9D"
color_teal="teal"
# color_white="#f8fAfc"
# color_white="white"
# color_pink="#f5c2e7"
color_pink="pink"
color_black="#000000"
# color_black="black"
# color_blue='#3D3BF3'
color_blue="blue"
color_mauve="#FFE3E3"
color_offwhite="#F9F9F2"
color_grey="#2a2a2a"
# color_grey="grey"
# accent="#015551"
# accent="#143D60"
# accent="#22177A"
# accent="#3D8D7A"
accent="purple"
accent="$accent"
color_accent="$accent"
color_primary="default"
color_secondary="$color_grey"
color_fg_primary="default"
color_fg_secondary="$color_offwhite"
window_status_current_bg="$accent"
window_status_current_fg="default"
theme_mode_bg="$color_accent"
theme_mode_fg="$color_fg_primary"
tmux_conf_theme_window_fg="default"
# window style
tmux_conf_theme_window_bg="default"
# highlight focused pane, possible values are:
# - true
# - false (default)
tmux_conf_theme_highlight_focused_pane=false
# focused pane colours:
tmux_conf_theme_focused_pane_bg="default"
# pane border style, possible values are:
# - thin (default)
# - fat
tmux_conf_theme_pane_border_style=thin
# pane borders colours:
tmux_conf_theme_pane_border="default"
tmux_conf_theme_pane_active_border="$color_accent"
%if #{>=:#{version},3.2}
tmux_conf_theme_pane_active_border="#{?pane_in_mode,$color_accent,#{?synchronize-panes,$color_accent,$color_accent}}"
%endif
# pane indicator colours (when you hit <prefix> + q)
tmux_conf_theme_pane_indicator="$color_accent"
tmux_conf_theme_pane_active_indicator="$color_accent"
# status line style
tmux_conf_theme_message_fg="default"
tmux_conf_theme_message_bg="default"
tmux_conf_theme_message_attr="none"
# status line command style (<prefix> : Escape)
tmux_conf_theme_message_command_fg="default"
tmux_conf_theme_message_command_bg="default"
tmux_conf_theme_message_command_attr="bold"
# window modes style
tmux_conf_theme_mode_fg="$theme_mode_fg"
tmux_conf_theme_mode_bg="$theme_mode_bg"
tmux_conf_theme_mode_attr="bold"
# status line style
tmux_conf_theme_status_fg="$color_fg_primary"
tmux_conf_theme_status_bg="$color_primary"
tmux_conf_theme_status_attr="none"
# terminal title
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_terminal_title="#h ❐ #S ● #I #W"
# window status style
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_window_status_fg="$color_fg_primary"
tmux_conf_theme_window_status_bg="$color_primary"
tmux_conf_theme_window_status_attr="none"
# tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
# tmux_conf_theme_window_status_format=" #I: #(despell -e #W) #W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_format=" #I:#W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
# window current status style
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username}
# - #{username_ssh}
# tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
# tmux_conf_theme_window_status_current_format="#I: #(despell -e #W) #[fg=$tmux_conf_theme_window_status_current_fg]#W*#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_current_format="#I:#[fg=$tmux_conf_theme_window_status_current_fg]#W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_current_fg="$window_status_current_fg"
tmux_conf_theme_window_status_current_bg="$window_status_current_bg"
tmux_conf_theme_window_status_current_attr="bold"
# window activity status style
tmux_conf_theme_window_status_activity_fg="$color_fg_primary"
tmux_conf_theme_window_status_activity_bg="$color_primary"
tmux_conf_theme_window_status_activity_attr="underscore"
# window bell status style
tmux_conf_theme_window_status_bell_fg="$color_fg_primary"
tmux_conf_theme_window_status_bell_bg="$color_primary"
tmux_conf_theme_window_status_bell_attr="blink,bold"
# window last status style
tmux_conf_theme_window_status_last_fg="$color_fg_primary"
tmux_conf_theme_window_status_last_bg="$color_primary"
tmux_conf_theme_window_status_last_attr="bold"
# status left/right sections separators
tmux_conf_theme_left_separator_main=""
tmux_conf_theme_left_separator_sub="|"
tmux_conf_theme_right_separator_main=""
tmux_conf_theme_right_separator_sub="\u2022"
# tmux_conf_theme_left_separator_main='\uE0B0' # /!\ you don't need to install Powerline
# tmux_conf_theme_left_separator_sub='\uE0B1' # yku only need fonts patched with
# tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone
# tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md
#
# status left/right content:
# - separate main sections with "|"
# - separate subsections with ","
# - built-in variables are:
# - #{battery_bar}
# - #{battery_hbar}
# - #{battery_percentage}
# - #{battery_status}
# - #{battery_vbar}
# - #{circled_session_name}
# - #{hostname_ssh}
# - #{hostname}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{loadavg}
# - #{mouse}
# - #{pairing}
# - #{prefix}
# - #{root}
# - #{synchronized}
# - #{uptime_y}
# - #{uptime_d} (modulo 365 when #{uptime_y} is used)
# - #{uptime_h}
# - #{uptime_m}
# - #{uptime_s}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_status_left=" [#S]"
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized} |\u2022 #{username}#{root} |\u2022 #{hostname} |\u2022 ↑ #{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} "
# status left style
tmux_conf_theme_status_left_fg="$color_fg_primary,$color_fg_primary,$color_fg_primary"
tmux_conf_theme_status_left_bg="$color_primary,$color_primary,$color_primary"
tmux_conf_theme_status_left_attr="bold,none,none"
# status right style
tmux_conf_theme_status_right_fg="$color_fg_primary,$color_fg_primary,$color_fg_primary,$color_fg_primary"
tmux_conf_theme_status_right_bg="$color_primary,$color_primary,$color_primary,$color_primary"
tmux_conf_theme_status_right_attr="bold,none,none,none"
# pairing indicator
tmux_conf_theme_pairing="⚇" # U+2687
tmux_conf_theme_pairing_fg="none"
tmux_conf_theme_pairing_bg="none"
tmux_conf_theme_pairing_attr="none"
# prefix indicator
tmux_conf_theme_prefix="⌨" # U+2328
tmux_conf_theme_prefix_fg="none"
tmux_conf_theme_prefix_bg="none"
tmux_conf_theme_prefix_attr="none"
# mouse indicator
tmux_conf_theme_mouse="↗" # U+2197
tmux_conf_theme_mouse_fg="none"
tmux_conf_theme_mouse_bg="none"
tmux_conf_theme_mouse_attr="none"
# root indicator
tmux_conf_theme_root="!"
tmux_conf_theme_root_fg="none"
tmux_conf_theme_root_bg="none"
tmux_conf_theme_root_attr="bold,blink"
# synchronized indicator
tmux_conf_theme_synchronized="⚏" # U+268F
tmux_conf_theme_synchronized_fg="none"
tmux_conf_theme_synchronized_bg="none"
tmux_conf_theme_synchronized_attr="none"
# battery bar symbols
# tmux_conf_battery_bar_symbol_full="◼"
# tmux_conf_battery_bar_symbol_empty="◻"
tmux_conf_battery_bar_symbol_full="♥"
tmux_conf_battery_bar_symbol_empty="·"
# battery bar length (in number of symbols), possible values are:
# - auto
# - a number, e.g. 5
tmux_conf_battery_bar_length="auto"
# battery bar palette, possible values are:
# - gradient (default)
# - heat
# - "colour_full_fg,colour_empty_fg,colour_bg"
tmux_conf_battery_bar_palette="gradient"
#tmux_conf_battery_bar_palette="#d70000,#e4e4e4,#000000" # red, white, black
# battery hbar palette, possible values are:
# - gradient (default)
# - heat
# - "colour_low,colour_half,colour_full"
tmux_conf_battery_hbar_palette="gradient"
#tmux_conf_battery_hbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, $color_accent
# battery vbar palette, possible values are:
# - gradient (default)
# - heat
# - "colour_low,colour_half,colour_full"
tmux_conf_battery_vbar_palette="gradient"
#tmux_conf_battery_vbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, $color_accent
# symbols used to indicate whether battery is charging or discharging
# tmux_conf_battery_status_charging="↑" # U+2191
# tmux_conf_battery_status_discharging="↓" # U+2193
tmux_conf_battery_status_charging="🔌" # U+1F50C
tmux_conf_battery_status_discharging="🔋" # U+1F50B
# clock style (when you hit <prefix> + t)
# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right
tmux_conf_theme_clock_colour="$color_accent"
tmux_conf_theme_clock_style="24"
# -- clipboard -----------------------------------------------------------------
# in copy mode, copying selection also copies to the OS clipboard
# - true
# - false (default)
# - disabled
# on Linux, this requires xsel, xclip or wl-copy
tmux_conf_copy_to_os_clipboard=true
# -- urlscan -------------------------------------------------------------------
# options passed to urlscan
tmux_conf_urlscan_options="--compact --dedupe"
# -- user customizations -------------------------------------------------------
# this is the place to override or undo settings
# increase history size
set -g history-limit 99999999
set status-bg default
# start with mouse mode enabled
set -g mouse on
# force Vi mode
# really you should export VISUAL or EDITOR environment variable, see manual
set -g status-keys vi
set -g mode-keys vi
# replace C-b by C-a instead of using both prefixes
set -gu prefix2
unbind C-a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
unbind -T copy-mode-vi MouseDragEnd1Pane
# if you don't want Oh my tmux! to alter a binding, use #!important
# bind c new-window -c '#{pane_current_path}' #!important
# move status line to top
set -g status-position bottom
# -- tpm -----------------------------------------------------------------------
# while I don't use tpm myself, many people requested official support so here
# is a seamless integration that automatically installs plugins in parallel
# whenever a plugin introduces a variable to be used in 'status-left' or
# 'status-right', you can use it in 'tmux_conf_theme_status_left' and
# 'tmux_conf_theme_status_right' variables.
# by default, launching tmux will update tpm and all plugins
# - true (default)
# - false
tmux_conf_update_plugins_on_launch=true
# by default, reloading the configuration will update tpm and all plugins
# - true (default)
# - false
tmux_conf_update_plugins_on_reload=true
# by default, reloading the configuration will uninstall tpm and plugins when no
# plugins are enabled
# - true (default)
# - false
tmux_conf_uninstall_plugins_on_reload=true
# /!\ the tpm bindings differ slightly from upstream:
# - installing plugins: <prefix> + I
# - uninstalling plugins: <prefix> + Alt + u
# - updating plugins: <prefix> + u
# /!\ do not add set -g @plugin 'tmux-plugins/tpm'
# /!\ do not add run '~/.tmux/plugins/tpm/tpm'
# to enable a plugin, use the 'set -g @plugin' syntax:
# visit https://github.com/tmux-plugins for available plugins
# set -g @plugin 'tmux-plugins/tmux-copycat'
#set -g @plugin 'tmux-plugins/tmux-cpu'
# set -g @plugin 'tmux-plugins/tmux-resurrect'
#set -g @plugin 'tmux-plugins/tmux-continuum'
#set -g @continuum-restore 'on'
set -g @plugin 'tmux-plugins/tmux-logging'
set -g @save-complete-history-path "$HOME/tmux_logs/history"
set -g @logging-path "$HOME/tmux_logs/logging"
set -g @screen-capture-path "$HOME/tmux_logs/captures"
# switch windows alt+number
bind-key -n M-1 select-window -t 1
bind-key -n M-2 select-window -t 2
bind-key -n M-3 select-window -t 3
bind-key -n M-4 select-window -t 4
bind-key -n M-5 select-window -t 5
bind-key -n M-6 select-window -t 6
bind-key -n M-7 select-window -t 7
bind-key -n M-8 select-window -t 8
bind-key -n M-9 select-window -t 9
# Toggle popup window with Ctrl+
bind-key -n -N 'Toggle popup window' M-p if-shell -F '#{==:#{session_name},popup}' {
detach-client
} {
display-popup -d "#{pane_current_path}" -xC -yC -w 70% -h 65% -E 'tmux attach-session -t popup || tmux new-session -s popup'
}
# Set alignment
set -g status-justify left
set -g status-style fg=default,bg=default
# set mode-style "fg=black,bg=default"
# -- custom variables ----------------------------------------------------------
# to define a custom #{foo} variable, define a POSIX shell function between the
# '# EOF' and the '# "$@"' lines. Please note that the opening brace { character
# must be on the same line as the function name otherwise the parse won't detect
# it.
#
# then, use #{foo} in e.g. the 'tmux_conf_theme_status_left' or the
# 'tmux_conf_theme_status_right' variables.
# ------------------------------------------------------------------------------
# # /!\ do not remove the following line
# EOF
#
# # /!\ do not "uncomment" the functions: the leading "# " characters are needed
#
# weather() { # see https://github.com/chubin/wttr.in#one-line-output
# curl -f -s -m 2 'wttr.in?format=3' || printf '\n' # /!\ make sure curl is installed
# sleep 900 # sleep for 15 minutes, throttle network requests whatever the value of status-interval
# }
#
# online() {
# ping -c 1 1.1.1.1 >/dev/null 2>&1 && printf '✔' || printf '✘'
# }
#
# wan_ip_v4() {
# curl -f -s -m 2 -4 ifconfig.me
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
# }
#
# wan_ip_v6() {
# curl -f -s -m 2 -6 ifconfig.me
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
# }
#
# "$@"
# # /!\ do not remove the previous line
# # do not write below this line

1742
tmux/tmux.conf Normal file

File diff suppressed because it is too large Load Diff

31
tmux/tmux.conf.colors Normal file
View File

@@ -0,0 +1,31 @@
# default theme
tmux_conf_theme_colour_1="#080808" # dark gray
tmux_conf_theme_colour_2="#303030" # gray
tmux_conf_theme_colour_3="#8a8a8a" # light gray
tmux_conf_theme_colour_4="#00afff" # light blue
tmux_conf_theme_colour_5="#ffff00" # yellow
tmux_conf_theme_colour_6="#080808" # dark gray
tmux_conf_theme_colour_7="#e4e4e4" # white
tmux_conf_theme_colour_8="#080808" # dark gray
tmux_conf_theme_colour_9="#ffff00" # yellow
tmux_conf_theme_colour_10="#ff00af" # pink
tmux_conf_theme_colour_11="#5fff00" # green
tmux_conf_theme_colour_12="#8a8a8a" # light gray
tmux_conf_theme_colour_13="#e4e4e4" # white
tmux_conf_theme_colour_14="#080808" # dark gray
tmux_conf_theme_colour_15="#080808" # dark gray
tmux_conf_theme_colour_16="#d70000" # red
tmux_conf_theme_colour_17="#e4e4e4" # white
color_yellow="#f9e2af"
color_red="#f38ba8"
color_green="#C9E9D2"
color_teal="#C9DABF"
color_white="#cdd6f4"
color_pink="#f5c2e7"
color_black="#11111b"
color_blue='#789DBC'
color_mauve="#FFE3E3"
color_offwhite="#FEF9F2"

503
tmux/tmux.conf.local Normal file
View File

@@ -0,0 +1,503 @@
# : << EOF
# -- bindings ------------------------------------------------------------------
# preserve tmux stock bindings,
# while adding bindings that don't conflict with these stock bindings
# /!\ this disables some of Oh my tmux! bindings described in README.md
# - true
# - false (default)
tmux_conf_preserve_stock_bindings=false
# -- session creation ----------------------------------------------------------
# prompt for session name when creating a new session, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-session bindings)
tmux_conf_new_session_prompt=true
# new session retains current path, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-session bindings)
tmux_conf_new_session_retain_current_path=false
# -- windows & pane creation ---------------------------------------------------
# new window retains current path, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-window bindings)
tmux_conf_new_window_retain_current_path=false
# new window tries to reconnect ssh sessions, possible values are:
# - true
# - false (default)
# - disabled (do not modify new-window bindings)
tmux_conf_new_window_reconnect_ssh=false
# new pane retains current path, possible values are:
# - true (default)
# - false
# - disabled (do not modify split-window bindings)
tmux_conf_new_pane_retain_current_path=true
# new pane tries to reconnect ssh sessions, possible values are:
# - true
# - false (default)
# - disabled (do not modify split-window bindings)
tmux_conf_new_pane_reconnect_ssh=false
# -- display -------------------------------------------------------------------
# RGB 24-bit colour support, possible values are:
# - true
# - false
# - auto (default)
#
# automatic detection relies on the COLORTERM environment variable being defined
# to 'truecolor' or '24bit' or '$ tput colors' answering '16777216'
# see https://github.com/termstandard/colors
tmux_conf_24b_colour=auto
# -- theming -------------------------------------------------------------------
# enable or disable theming:
# - enabled (default)
# - disabled
# when disabled, all tmux_conf_theme_xxx variables are ignored except:
# - tmux_conf_theme_pairing
# - tmux_conf_theme_prefix
# - tmux_conf_theme_mouse
# - tmux_conf_theme_root
# - tmux_conf_theme_synchronized
tmux_conf_theme=enabled
# color_yellow="#FCDE70"
color_yellow="yellow"
# color_red="#D91656"
color_reg="red"
# color_green="#85A947"
color_green="green"
# color_teal="#219B9D"
color_teal="teal"
# color_white="#fff"
color_white="white"
# color_pink="#f5c2e7"
color_pink="pink"
color_black="#000000"
# color_black="black"
# color_blue='#3D3BF3'
color_blue="blue"
color_mauve="#FFE3E3"
color_offwhite="#F9F9F2"
color_grey="#2a2a2a"
# color_grey="grey"
# accent="#015551"
# accent="#143D60"
# accent="#22177A"
# accent="#3D8D7A"
accent="green"
color_accent="$accent"
color_primary="default"
color_secondary="$color_grey"
color_fg_primary="default"
color_fg_secondary="$color_offwhite"
window_status_current_bg="default"
window_status_current_fg="$color_accent"
theme_mode_bg="$color_accent"
theme_mode_fg="$color_fg_primary"
tmux_conf_theme_window_fg="$color_fg_primary"
# window style
tmux_conf_theme_window_bg="default"
# highlight focused pane, possible values are:
# - true
# - false (default)
tmux_conf_theme_highlight_focused_pane=false
# focused pane colours:
tmux_conf_theme_focused_pane_bg="default"
# pane border style, possible values are:
# - thin (default)
# - fat
tmux_conf_theme_pane_border_style=thin
# pane borders colours:
tmux_conf_theme_pane_border="grey"
tmux_conf_theme_pane_active_border="$color_accent"
%if #{>=:#{version},3.2}
tmux_conf_theme_pane_active_border="#{?pane_in_mode,$color_accent,#{?synchronize-panes,$color_accent,$color_accent}}"
%endif
# pane indicator colours (when you hit <prefix> + q)
tmux_conf_theme_pane_indicator="$color_accent"
tmux_conf_theme_pane_active_indicator="$color_accent"
# status line style
tmux_conf_theme_message_fg="$color_fg_primary"
tmux_conf_theme_message_bg="$color_accent"
tmux_conf_theme_message_attr="none"
# status line command style (<prefix> : Escape)
tmux_conf_theme_message_command_fg="$color_fg_primary"
tmux_conf_theme_message_command_bg="$color_primary"
tmux_conf_theme_message_command_attr="bold"
# window modes style
tmux_conf_theme_mode_fg="$theme_mode_fg"
tmux_conf_theme_mode_bg="$theme_mode_bg"
tmux_conf_theme_mode_attr="bold"
# status line style
tmux_conf_theme_status_fg="$color_white"
tmux_conf_theme_status_bg="default"
tmux_conf_theme_status_attr="none"
# terminal title
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_terminal_title="#h ❐ #S ● #I #W"
# window status style
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_window_status_fg="default"
tmux_conf_theme_window_status_bg="default"
tmux_conf_theme_window_status_attr="none"
# tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
# tmux_conf_theme_window_status_format=" #I: #(despell -e #W) #W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_format=" #I:#W #{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
# window current status style
# - built-in variables are:
# - #{circled_window_index}
# - #{circled_session_name}
# - #{hostname}
# - #{hostname_ssh}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{username}
# - #{username_ssh}
# tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
# tmux_conf_theme_window_status_current_format="#I: #(despell -e #W) #[fg=$tmux_conf_theme_window_status_current_fg]#W*#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_current_format="#I:#[fg=$tmux_conf_theme_window_status_current_fg]#W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
tmux_conf_theme_window_status_current_fg="$window_status_current_fg"
tmux_conf_theme_window_status_current_bg="$window_status_current_bg"
tmux_conf_theme_window_status_current_attr="bold"
# window activity status style
tmux_conf_theme_window_status_activity_fg="$color_fg_primary"
tmux_conf_theme_window_status_activity_bg="$color_primary"
tmux_conf_theme_window_status_activity_attr="underscore"
# window bell status style
tmux_conf_theme_window_status_bell_fg="$color_fg_primary"
tmux_conf_theme_window_status_bell_bg="$color_primary"
tmux_conf_theme_window_status_bell_attr="blink,bold"
# window last status style
tmux_conf_theme_window_status_last_fg="$color_fg_primary"
tmux_conf_theme_window_status_last_bg="$color_primary"
tmux_conf_theme_window_status_last_attr="bold"
# status left/right sections separators
tmux_conf_theme_left_separator_main=""
tmux_conf_theme_left_separator_sub="|"
tmux_conf_theme_right_separator_main=""
tmux_conf_theme_right_separator_sub="\u2022"
# tmux_conf_theme_left_separator_main='\uE0B0' # /!\ you don't need to install Powerline
# tmux_conf_theme_left_separator_sub='\uE0B1' # yku only need fonts patched with
# tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone
# tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md
#
# status left/right content:
# - separate main sections with "|"
# - separate subsections with ","
# - built-in variables are:
# - #{battery_bar}
# - #{battery_hbar}
# - #{battery_percentage}
# - #{battery_status}
# - #{battery_vbar}
# - #{circled_session_name}
# - #{hostname_ssh}
# - #{hostname}
# - #{hostname_full}
# - #{hostname_full_ssh}
# - #{loadavg}
# - #{mouse}
# - #{pairing}
# - #{prefix}
# - #{root}
# - #{synchronized}
# - #{uptime_y}
# - #{uptime_d} (modulo 365 when #{uptime_y} is used)
# - #{uptime_h}
# - #{uptime_m}
# - #{uptime_s}
# - #{username}
# - #{username_ssh}
tmux_conf_theme_status_left=" [#S]"
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized} |\u2022 #{username}#{root} |\u2022 #{hostname} |\u2022 ↑ #{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} "
# status left style
tmux_conf_theme_status_left_fg="$color_black,$color_fg_primary,$color_fg_primary"
tmux_conf_theme_status_left_bg="$color_primary,$color_primary,$color_primary"
tmux_conf_theme_status_left_attr="bold,none,none"
# status right style
tmux_conf_theme_status_right_fg="$color_fg_primary,$color_fg_primary,$color_fg_primary,$color_fg_primary"
tmux_conf_theme_status_right_bg="$color_primary,$color_primary,$color_primary,$color_primary"
tmux_conf_theme_status_right_attr="bold,none,bold,none"
# pairing indicator
tmux_conf_theme_pairing="⚇" # U+2687
tmux_conf_theme_pairing_fg="none"
tmux_conf_theme_pairing_bg="none"
tmux_conf_theme_pairing_attr="none"
# prefix indicator
tmux_conf_theme_prefix="⌨" # U+2328
tmux_conf_theme_prefix_fg="none"
tmux_conf_theme_prefix_bg="none"
tmux_conf_theme_prefix_attr="none"
# mouse indicator
tmux_conf_theme_mouse="↗" # U+2197
tmux_conf_theme_mouse_fg="none"
tmux_conf_theme_mouse_bg="none"
tmux_conf_theme_mouse_attr="none"
# root indicator
tmux_conf_theme_root="!"
tmux_conf_theme_root_fg="none"
tmux_conf_theme_root_bg="none"
tmux_conf_theme_root_attr="bold,blink"
# synchronized indicator
tmux_conf_theme_synchronized="⚏" # U+268F
tmux_conf_theme_synchronized_fg="none"
tmux_conf_theme_synchronized_bg="none"
tmux_conf_theme_synchronized_attr="none"
# battery bar symbols
# tmux_conf_battery_bar_symbol_full="◼"
# tmux_conf_battery_bar_symbol_empty="◻"
tmux_conf_battery_bar_symbol_full="♥"
tmux_conf_battery_bar_symbol_empty="·"
# battery bar length (in number of symbols), possible values are:
# - auto
# - a number, e.g. 5
tmux_conf_battery_bar_length="auto"
# battery bar palette, possible values are:
# - gradient (default)
# - heat
# - "colour_full_fg,colour_empty_fg,colour_bg"
tmux_conf_battery_bar_palette="gradient"
#tmux_conf_battery_bar_palette="#d70000,#e4e4e4,#000000" # red, white, black
# battery hbar palette, possible values are:
# - gradient (default)
# - heat
# - "colour_low,colour_half,colour_full"
tmux_conf_battery_hbar_palette="gradient"
#tmux_conf_battery_hbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, $color_accent
# battery vbar palette, possible values are:
# - gradient (default)
# - heat
# - "colour_low,colour_half,colour_full"
tmux_conf_battery_vbar_palette="gradient"
#tmux_conf_battery_vbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, $color_accent
# symbols used to indicate whether battery is charging or discharging
# tmux_conf_battery_status_charging="↑" # U+2191
# tmux_conf_battery_status_discharging="↓" # U+2193
tmux_conf_battery_status_charging="🔌" # U+1F50C
tmux_conf_battery_status_discharging="🔋" # U+1F50B
# clock style (when you hit <prefix> + t)
# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right
tmux_conf_theme_clock_colour="$color_accent"
tmux_conf_theme_clock_style="24"
# -- clipboard -----------------------------------------------------------------
# in copy mode, copying selection also copies to the OS clipboard
# - true
# - false (default)
# - disabled
# on Linux, this requires xsel, xclip or wl-copy
tmux_conf_copy_to_os_clipboard=true
# -- urlscan -------------------------------------------------------------------
# options passed to urlscan
tmux_conf_urlscan_options="--compact --dedupe"
# -- user customizations -------------------------------------------------------
# this is the place to override or undo settings
# increase history size
set -g history-limit 99999999
set status-bg default
# start with mouse mode enabled
set -g mouse on
# Allow tmux to understand and pass through color queries
set -as terminal-overrides ",xterm*:Tc"
set -as terminal-overrides ",xterm*:RGB"
# force Vi mode
# really you should export VISUAL or EDITOR environment variable, see manual
set -g status-keys vi
set -g mode-keys vi
# replace C-b by C-a instead of using both prefixes
set -gu prefix2
unbind C-a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
unbind -T copy-mode-vi MouseDragEnd1Pane
# if you don't want Oh my tmux! to alter a binding, use #!important
# bind c new-window -c '#{pane_current_path}' #!important
# move status line to top
set -g status-position bottom
# -- tpm -----------------------------------------------------------------------
# while I don't use tpm myself, many people requested official support so here
# is a seamless integration that automatically installs plugins in parallel
# whenever a plugin introduces a variable to be used in 'status-left' or
# 'status-right', you can use it in 'tmux_conf_theme_status_left' and
# 'tmux_conf_theme_status_right' variables.
# by default, launching tmux will update tpm and all plugins
# - true (default)
# - false
tmux_conf_update_plugins_on_launch=true
# by default, reloading the configuration will update tpm and all plugins
# - true (default)
# - false
tmux_conf_update_plugins_on_reload=true
# by default, reloading the configuration will uninstall tpm and plugins when no
# plugins are enabled
# - true (default)
# - false
tmux_conf_uninstall_plugins_on_reload=true
# /!\ the tpm bindings differ slightly from upstream:
# - installing plugins: <prefix> + I
# - uninstalling plugins: <prefix> + Alt + u
# - updating plugins: <prefix> + u
# /!\ do not add set -g @plugin 'tmux-plugins/tpm'
# /!\ do not add run '~/.tmux/plugins/tpm/tpm'
# to enable a plugin, use the 'set -g @plugin' syntax:
# visit https://github.com/tmux-plugins for available plugins
#set -g @plugin 'tmux-plugins/tmux-copycat'
#set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'tmux-plugins/tmux-resurrect'
#set -g @plugin 'tmux-plugins/tmux-continuum'
#set -g @continuum-restore 'on'
set -g @plugin 'tmux-plugins/tmux-logging'
# switch windows alt+number
bind-key -n M-1 select-window -t 1
bind-key -n M-2 select-window -t 2
bind-key -n M-3 select-window -t 3
bind-key -n M-4 select-window -t 4
bind-key -n M-5 select-window -t 5
bind-key -n M-6 select-window -t 6
bind-key -n M-7 select-window -t 7
bind-key -n M-8 select-window -t 8
bind-key -n M-9 select-window -t 9
# Toggle popup window with Ctrl+
bind-key -n -N 'Toggle popup window' M-p if-shell -F '#{==:#{session_name},popup}' {
detach-client
} {
display-popup -d "#{pane_current_path}" -xC -yC -w 70% -h 65% -E 'tmux attach-session -t popup || tmux new-session -s popup'
}
bind-key -n M-f "tmux-sessionizer\n"
# Set alignment
set -g status-justify left
# set -g status-style fg=default,bg=default
# set mode-style "fg=black,bg=default"
# -- custom variables ----------------------------------------------------------
# to define a custom #{foo} variable, define a POSIX shell function between the
# '# EOF' and the '# "$@"' lines. Please note that the opening brace { character
# must be on the same line as the function name otherwise the parse won't detect
# it.
#
# then, use #{foo} in e.g. the 'tmux_conf_theme_status_left' or the
# 'tmux_conf_theme_status_right' variables.
# ------------------------------------------------------------------------------
# # /!\ do not remove the following line
# EOF
#
# # /!\ do not "uncomment" the functions: the leading "# " characters are needed
#
# weather() { # see https://github.com/chubin/wttr.in#one-line-output
# curl -f -s -m 2 'wttr.in?format=3' || printf '\n' # /!\ make sure curl is installed
# sleep 900 # sleep for 15 minutes, throttle network requests whatever the value of status-interval
# }
#
# online() {
# ping -c 1 1.1.1.1 >/dev/null 2>&1 && printf '✔' || printf '✘'
# }
#
# wan_ip_v4() {
# curl -f -s -m 2 -4 ifconfig.me
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
# }
#
# wan_ip_v6() {
# curl -f -s -m 2 -6 ifconfig.me
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
# }
#
# "$@"
# # /!\ do not remove the previous line
# # do not write below this line

62
wezterm.lua Normal file
View File

@@ -0,0 +1,62 @@
-- Pull in the wezterm API
local wezterm = require 'wezterm'
-- This will hold the configuration.
local config = wezterm.config_builder()
-- This is where you actually apply your config choices.
-- For example, changing the initial geometry for new windows:
config.initial_cols = 120
config.initial_rows = 28
-- or, changing the font size and color scheme.
-- You can specify some parameters to influence the font selection;
-- for example, this selects a Bold, Italic font variant.
config.font = wezterm.font('Iosevka Nerd Font Mono')
config.font_size = 12
config.color_scheme = 'iTerm2 Smoooooth'
config.window_frame = {
-- The font used in the tab bar.
-- Roboto Bold is the default; this font is bundled
-- with wezterm.
-- Whatever font is selected here, it will have the
-- main font setting appended to it to pick up any
-- fallback fonts you may have used there.
font = wezterm.font { family = 'Iosevka', weight = 'Bold' },
-- The size of the font in the tab bar.
-- Default to 10.0 on Windows but 12.0 on other systems
font_size = 14.0,
-- The overall background color of the tab bar when
-- the window is focused
active_titlebar_bg = '#333333',
-- The overall background color of the tab bar when
-- the window is not focused
inactive_titlebar_bg = '#333333',
}
config.colors = {
tab_bar = {
-- The color of the inactive tab bar edge/divider
inactive_tab_edge = '#575757',
},
}
config.window_background_opacity = .9
config.window_padding = {
left = 8,
right = 8,
top = 0,
bottom = 0,
}
-- Finally, return the configuration to wezterm:
return config

60
zsh/zsh_personal Normal file
View File

@@ -0,0 +1,60 @@
# source /opt/tools/swtools/git-completion/git-completion.bash #added by 6500gitsetup
#---------------------------------- Alias -----------------------------------------
alias tmux='tmux -u'
alias vim="nvim"
alias n="nvim"
alias z="zoxide"
alias cht="cht.sh"
alias ls="eza --group-directories-first"
alias bless="bat --paging=auto"
alias gca="git commit --amend"
alias gs="git status"
alias gC="git commit"
alias gl="git log"
alias gn="git log -n2"
alias go="git log --oneline"
alias rename-pane="~/dotfiles/scripts/rename-pane.sh"
#--------------------------------- Exports ---------------------------------------
export EDITOR='nvim'
#--------------------------------- Set bash prompt -------------------------------
# export PS1="\e[1;32m\h\e[0m:\e[1;34m\w\e[0m\n$ "
#
#
#--- DevOps Shell
# devops-activate
cdls() {
local dir="$1"
local dir="${dir:=$HOME}"
if [[ -d "$dir" ]]; then
cd "$dir" >/dev/null; ls --color=auto
else
echo "bash: cdls: $dir: Directory not found"
fi
}
#
# if [[ $- =~ i ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_TTY" ]]; then
# tmux attach-session -t 0|| tmux new-session -s 0
# fi
#
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
alias f="fzf --preview 'fzf-preview.sh {}'"
alias t="fzf-tmux"
alias tfn="~/scripts/nvim-fzf.sh"
export FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS'
--multi
--color=fg:-1,fg+:#d0d0d0,bg:-1,bg+:#262626
--color=hl:#5f87af,hl+:#5fd7ff,info:#afaf87,marker:#87ff00
--color=prompt:#d7005f,spinner:#af5fff,pointer:#af5fff,header:#87afaf
--color=border:#262626,label:#aeaeae,query:#d9d9d9
--border="rounded"
--border-label="" --preview-window="border-rounded" --prompt="> "
--info="inline" --marker=">" --pointer="◆" --separator="─" --scrollbar="│"'
export PATH="$HOME/neovim/bin:$PATH"
# colorscript -r