Last active
October 15, 2024 17:46
-
-
Save Ehsanul-Karim-Pappu/0efa2b0c7d194a881a9453493b5e0613 to your computer and use it in GitHub Desktop.
Config file of Vim, zsh, tmux
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Send prefix | |
set-option -g prefix C-a | |
unbind-key C-a | |
bind-key C-a send-prefix | |
set -g base-index 1 | |
# Use Alt-arrow keys to switch panes | |
bind -n M-Left select-pane -L | |
bind -n M-Right select-pane -R | |
bind -n M-Up select-pane -U | |
bind -n M-Down select-pane -D | |
# Shift arrow to switch windows | |
bind -n S-Left previous-window | |
bind -n S-Right next-window | |
# Mouse mode | |
setw -g mouse on | |
# enable vi mode | |
set-option -g status-keys vi | |
# Set easier window split keys | |
bind-key v split-window -h | |
bind-key h split-window -v | |
# set the pane border colors | |
#set-option -g pane-active-border-style fg=colour10 | |
#set-option -g pane-border-style fg=black | |
# set color for status bar | |
#set-option -g status-style fg=black,bg=colour10 | |
# set window title list colors | |
#set-window-option -g window-status-style fg=black,bg=colour157 | |
# active window title colors | |
#set-window-option -g window-status-current-style fg=colour159,bg=colour63,bright | |
#set-window-option -g window-status-current-style fg=colour231,bg=colour04 | |
# this will restore my tmux session | |
#set -g @continuum-restore 'on' | |
set -g status-interval 1 # set update frequencey (default 15 seconds) | |
set -g status-justify centre # center window list for clarity | |
# Easy config reload | |
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded." | |
# List of plugins | |
set -g @plugin 'tmux-plugins/tpm' | |
set -g @plugin 'tmux-plugins/tmux-sensible' | |
set -g @plugin 'tmux-plugins/tmux-prefix-highlight' | |
set -g @plugin 'tmux-plugins/tmux-resurrect' | |
set -g @plugin 'tmux-plugins/tmux-continuum' | |
set -g @plugin 'tmux-plugins/tmux-cpu' | |
set -g @plugin 'jimeh/tmux-themepack' | |
#set -g @plugin 'tmux-plugins/tmux-yank' | |
# increase the status-right length | |
#set-option -g status-right-length 140 | |
# displaying the prefix at status rigth | |
#set -g status-right "#{prefix_highlight}Uptime:#(uptime | cut -f 4-5 -d ' ' | cut -f 1 -d ',') #(/home/ehsan3p/.tmux/plugins/tmux-continuum/scripts/continuum_save.sh)#{?window_bigger,[#{window_offset_x}#,#{window_offset_y}] ,} %a%l:%M:%S%p %d/%m/%Y #{cpu_bg_color}CPU#{cpu_icon}#{cpu_percentage}" | |
#set-option -g status-left-length 20 | |
#set-option -g status-left " #H [#S] " | |
set -g @themepack 'powerline/double/cyan' | |
#set -g @themepack 'powerline/default/orange' | |
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) | |
run '~/.tmux/plugins/tpm/tpm' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" Basic Settings | |
set nocompatible " Use Vim settings, rather than Vi settings | |
filetype off " Required for Vundle plugin manager | |
" Case sensitivity settings for search | |
set ignorecase " Ignore case in search patterns | |
set smartcase " Override ignorecase if search pattern contains uppercase | |
" Plugin Management | |
call plug#begin('~/.vim/plugged') | |
" List of plugins with lazy loading where appropriate | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug 'tiagofumo/vim-nerdtree-syntax-highlight' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'ctrlpvim/ctrlp.vim' | |
Plug 'scrooloose/nerdcommenter' | |
Plug 'christoomey/vim-tmux-navigator' | |
Plug 'HerringtonDarkholme/yats.vim', { 'for': 'typescript' } | |
Plug 'vim-airline/vim-airline' | |
Plug 'morhetz/gruvbox' | |
Plug 'majutsushi/tagbar', { 'on': 'TagbarToggle' } | |
Plug 'Yggdroot/indentLine' | |
Plug 'tpope/vim-surround' " Easy quoting/parenthesizing | |
Plug 'tpope/vim-repeat' " Enable repeating supported plugin maps | |
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } | |
Plug 'junegunn/fzf.vim' " Fuzzy finder | |
call plug#end() | |
" Custom Settings | |
set mouse=a " Enable mouse usage in all modes | |
set number relativenumber " Show hybrid line numbers | |
set encoding=utf-8 " Use UTF-8 encoding | |
set backspace=indent,eol,start " Make backspace work as expected | |
set cursorline " Highlight the current line | |
set guioptions= " Remove GUI elements in gVim | |
syntax on " Enable syntax highlighting | |
set hidden " Allow switching buffers without saving | |
set history=1000 " Increase command history | |
set showcmd " Show partial commands in the last line of the screen | |
" Indentation Settings | |
set expandtab " Use spaces instead of tabs | |
set shiftwidth=4 " Number of spaces for auto-indent | |
set softtabstop=4 " Number of spaces for a tab | |
set autoindent " Copy indent from current line when starting a new line | |
set smartindent " Smart autoindenting when starting a new line | |
" File-specific indentation | |
autocmd FileType c,cpp setlocal expandtab shiftwidth=4 softtabstop=4 cindent | |
autocmd FileType javascript,typescript,html,css setlocal expandtab shiftwidth=2 softtabstop=2 | |
" Better search | |
set incsearch " Show search matches as you type | |
set hlsearch " Highlight search results | |
" Remove search highlighting with <leader><space> | |
nnoremap <leader><space> :nohlsearch<CR> | |
" Persistent undo | |
if has('persistent_undo') | |
set undofile | |
set undodir=~/.vim/undodir | |
endif | |
" Improved status line (if not using vim-airline) | |
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ [BUFFER=%n]\ %{strftime('%c')} | |
" Better buffer navigation | |
nnoremap <leader>bn :bnext<CR> | |
nnoremap <leader>bp :bprevious<CR> | |
nnoremap <leader>bf :bfirst<CR> | |
nnoremap <leader>bl :blast<CR> | |
" Better fold method | |
set foldmethod=indent | |
set foldlevelstart=99 " Start with all folds open | |
" NERDTree Setup | |
let g:NERDTreeWinPos = "right" | |
autocmd StdinReadPre * let s:std_in=1 | |
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif | |
" Key Mappings | |
let mapleader = "," " Set leader key to comma | |
" Toggle comment with Ctrl + / | |
nmap <C-_> <Plug>NERDCommenterToggle | |
vmap <C-_> <Plug>NERDCommenterToggle<CR>gv | |
" Toggle NERDTree with Ctrl + n | |
nmap <C-n> :NERDTreeToggle<CR> | |
" Quick save | |
nnoremap <leader>w :w<CR> | |
" Quick quit | |
nnoremap <leader>q :q<CR> | |
" Quick save and quit | |
nnoremap <leader>wq :wq<CR> | |
" Prettier command for CoC | |
command! -nargs=0 Prettier :CocCommand prettier.formatFile | |
" Move through wrapped lines | |
noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j') | |
noremap <silent> <expr> k (v:count == 0 ? 'gk' : 'k') | |
" CoC (Conquer of Completion) Configuration | |
" ... (rest of CoC configuration remains the same) | |
" Color Scheme Setup | |
set t_Co=256 " Use 256 colors | |
set background=dark " Use dark background | |
colorscheme gruvbox " Set color scheme to gruvbox | |
highlight Normal ctermbg=None " Use terminal background color | |
" FZF (Fuzzy Finder) Setup | |
nnoremap <C-p> :Files<CR> | |
nnoremap <leader>b :Buffers<CR> | |
nnoremap <leader>h :History<CR> | |
" Tagbar Setup | |
nmap <F8> :TagbarToggle<CR> " Toggle Tagbar with F8 | |
" IndentLine Setup | |
let g:indentLine_char = '│' " Character for displaying indentation levels | |
" Tags Setup | |
set tags=./tags,tags;$HOME " Set tags file location | |
" Automatically remove trailing whitespace on save | |
autocmd BufWritePre * %s/\s\+$//e | |
" Enable filetype detection and plugin/indent info | |
filetype plugin indent on | |
" Terminal escape | |
tnoremap <Esc> <C-\><C-n> | |
" Split navigation | |
nnoremap <C-J> <C-W><C-J> | |
nnoremap <C-K> <C-W><C-K> | |
nnoremap <C-L> <C-W><C-L> | |
nnoremap <C-H> <C-W><C-H> | |
" Toggle paste mode | |
set pastetoggle=<F2> | |
" Set a color column at 80 characters | |
set colorcolumn=80 | |
" Enable spell checking for certain file types | |
autocmd FileType markdown setlocal spell | |
autocmd FileType gitcommit setlocal spell | |
" Highlight trailing whitespace | |
highlight ExtraWhitespace ctermbg=red guibg=red | |
match ExtraWhitespace /\s\+$/ | |
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ | |
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/ | |
autocmd InsertLeave * match ExtraWhitespace /\s\+$/ | |
autocmd BufWinLeave * call clearmatches() | |
" Make Y behave like other capitals | |
nnoremap Y y$ | |
" Center search results | |
nnoremap n nzz | |
nnoremap N Nzz | |
nnoremap * *zz | |
nnoremap # #zz | |
nnoremap g* g*zz | |
nnoremap g# g#zz | |
" Reselect visual block after indent/outdent | |
vnoremap < <gv | |
vnoremap > >gv | |
" Improve scrolling performance | |
set lazyredraw | |
" Enable mouse in all modes | |
set mouse=a | |
" Don't redraw while executing macros (good performance config) | |
set lazyredraw | |
" For regular expressions turn magic on | |
set magic | |
" Show matching brackets when text indicator is over them | |
set showmatch | |
" How many tenths of a second to blink when matching brackets | |
set mat=2 | |
" No annoying sound on errors | |
set noerrorbells | |
set novisualbell | |
set t_vb= | |
set tm=500 | |
" Properly disable sound on errors on MacVim | |
if has("gui_macvim") | |
autocmd GUIEnter * set vb t_vb= | |
endif | |
" Add a bit extra margin to the left | |
set foldcolumn=1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. | |
# Initialization code that may require console input (password prompts, [y/n] | |
# confirmations, etc.) must go above this block; everything else may go below. | |
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then | |
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" | |
fi | |
# If you come from bash you might have to change your $PATH. | |
# export PATH=$HOME/bin:/usr/local/bin:$PATH | |
# Path to your oh-my-zsh installation. | |
export ZSH="/home/ehsan3p/.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="powerlevel10k/powerlevel10k" | |
# 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 the following line to disable bi-weekly auto-update checks. | |
# DISABLE_AUTO_UPDATE="true" | |
# Uncomment the following line to automatically update without prompting. | |
# DISABLE_UPDATE_PROMPT="true" | |
# Uncomment the following line to change how often to auto-update (in days). | |
# export UPDATE_ZSH_DAYS=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. | |
# 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 | |
zsh-autosuggestions | |
zsh-syntax-highlighting | |
) | |
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='mvim' | |
# fi | |
# Compilation flags | |
# export ARCHFLAGS="-arch x86_64" | |
# 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 the ZSH_CUSTOM folder. | |
# For a full list of active aliases, run `alias`. | |
# | |
# Example aliases | |
# alias zshconfig="mate ~/.zshrc" | |
# alias ohmyzsh="mate ~/.oh-my-zsh" | |
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. | |
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh | |
# my custom config | |
alias la='colorls -lA --sd' | |
alias ls='colorls -1 --sd' | |
alias lt='colorls --sd --tree=2' | |
alias lg='colorls --gs' | |
# Use lf to switch directories and bind it to ctrl-o | |
lfcd () { | |
tmp="$(mktemp)" | |
lf -last-dir-path="$tmp" "$@" | |
if [ -f "$tmp" ]; then | |
dir="$(cat "$tmp")" | |
rm -f "$tmp" | |
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" | |
fi | |
} | |
bindkey -s '^o' 'lfcd\n' | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. | |
# Initialization code that may require console input (password prompts, [y/n] | |
# confirmations, etc.) must go above this block; everything else may go below. | |
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then | |
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" | |
fi | |
# If you come from bash you might have to change your $PATH. | |
# export PATH=$HOME/bin:/usr/local/bin:$PATH | |
# Path to your oh-my-zsh installation. | |
export ZSH="/data/data/com.termux/files/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="powerlevel10k/powerlevel10k" | |
# 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 the following line to disable bi-weekly auto-update checks. | |
# DISABLE_AUTO_UPDATE="true" | |
# Uncomment the following line to automatically update without prompting. | |
# DISABLE_UPDATE_PROMPT="true" | |
# Uncomment the following line to change how often to auto-update (in days). | |
# export UPDATE_ZSH_DAYS=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. | |
# 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 zsh-autosuggestions zsh-syntax-highlighting) | |
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='mvim' | |
# fi | |
# Compilation flags | |
# export ARCHFLAGS="-arch x86_64" | |
# 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 the ZSH_CUSTOM folder. | |
# For a full list of active aliases, run `alias`. | |
# | |
# Example aliases | |
# alias zshconfig="mate ~/.zshrc" | |
# alias ohmyzsh="mate ~/.oh-my-zsh" | |
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. | |
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh | |
# my config | |
alias la='colorls -lA --sd' | |
alias ls='colorls -1 --sd' | |
alias lt='colorls --tree=3' | |
alias lg='colorls --gs' | |
# Use lf to switch directories and bind it to ctrl-o | |
lfcd () { | |
tmp="$(mktemp)" | |
lf -last-dir-path="$tmp" "$@" | |
if [ -f "$tmp" ]; then | |
dir="$(cat "$tmp")" | |
rm -f "$tmp" | |
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" | |
fi | |
} | |
bindkey -s '^o' 'lfcd\n' | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment