Created
March 7, 2024 06:17
-
-
Save RomjanHossain/1b6bebd7d1cce65726034a5dc855d6c6 to your computer and use it in GitHub Desktop.
Vimrc for the bubt pc
This file contains 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
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" | |
" ██╗ ██╗██╗███╗ ███╗██████╗ ██████╗ | |
" ██║ ██║██║████╗ ████║██╔══██╗██╔════╝ | |
" ██║ ██║██║██╔████╔██║██████╔╝██║ | |
" ╚██╗ ██╔╝██║██║╚██╔╝██║██╔══██╗██║ | |
" ╚████╔╝ ██║██║ ╚═╝ ██║██║ ██║╚██████╗ | |
" ╚═══╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ | |
" | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Disable compatibility with vi which can cause unexpected issues. | |
set nocompatible | |
" Enable type file detection. Vim will be able to try to detect the type of file is use. | |
filetype on | |
" Enable plugins and load plugin for the detected file type. | |
filetype plugin on | |
" Load an indent file for the detected file type. | |
filetype indent on | |
" Turn syntax highlighting on. | |
syntax on | |
" Add numbers to the file. | |
set relativenumber | |
set background=dark | |
" " Highlight cursor line underneath the cursor horizontally. | |
" set cursorline | |
" " Highlight cursor line underneath the cursor vertically. | |
" set cursorcolumn | |
" Do not wrap lines. Allow long lines to extend as far as the line goes. | |
set nowrap | |
" While searching though a file incrementally highlight matching characters as you type. | |
set incsearch | |
" Ignore capital letters during search. | |
set ignorecase | |
" Override the ignorecase option if searching for capital letters. | |
" This will allow you to search specifically for capital letters. | |
set smartcase | |
" Show partial command you type in the last line of the screen. | |
set showcmd | |
" Show the mode you are on the last line. | |
set showmode | |
" Show matching words during a search. | |
set showmatch | |
" Use highlighting when doing a search. | |
set hlsearch | |
" Set the commands to save in history default number is 20. | |
set history=1000 | |
" Enable auto completion menu after pressing TAB. | |
set wildmenu | |
" Make wildmenu behave like similar to Bash completion. | |
set wildmode=list:longest | |
" There are certain files that we would never want to edit with Vim. | |
" Wildmenu will ignore files with these extensions. | |
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx | |
" PLUGINS ---------------------------------------------------------------- {{{ | |
call plug#begin('~/.vim/plugged') | |
Plug 'dense-analysis/ale' | |
Plug 'preservim/nerdtree' | |
Plug 'morhetz/gruvbox' | |
Plug 'tomasr/molokai' | |
"below function is needed for ycm: | |
function! BuildYCM(info) | |
if a:info.status == 'installed' || a:info.force | |
!./install.py | |
endif | |
endfunction | |
Plug 'ycm-core/YouCompleteMe', { 'do': function('BuildYCM') } | |
" Track the engine. | |
Plug 'SirVer/ultisnips' | |
" Snippets are separated from the engine. Add this if you want them: | |
Plug 'honza/vim-snippets' | |
call plug#end() | |
" }}} | |
" MAPPINGS --------------------------------------------------------------- {{{ | |
" Set the backslash as the leader key. | |
" let mapleader = "space" | |
" " Press \\ to jump back to the last cursor position. | |
" nnoremap <leader>\ `` | |
" " Press \p to print the current file to the default printer from a Linux operating system. | |
" " View available printers: lpstat -v | |
" " Set default printer: lpoptions -d <printer_name> | |
" " <silent> means do not display output. | |
" nnoremap <silent> <leader>p :%w !lp<CR> | |
" Type jj to exit insert mode quickly. | |
inoremap jj <Esc> | |
" Press the space bar to type the : character in command mode. | |
" nnoremap <space> : | |
" Pressing the letter o will open a new line below the current one. | |
" Exit insert mode after creating a new line above or below the current line. | |
" nnoremap o o<esc> | |
" nnoremap O O<esc> | |
" Center the cursor vertically when moving to the next word during a search. | |
" nnoremap n nzz | |
" nnoremap N Nzz | |
" Yank from cursor to the end of line. | |
nnoremap Y y$ | |
" Map the F5 key to run a Python script inside Vim. | |
" We map F5 to a chain of commands here. | |
" :w saves the file. | |
" <CR> (carriage return) is like pressing the enter key. | |
" !clear runs the external clear screen command. | |
" !python3 % executes the current file with Python. | |
" nnoremap <f5> :w <CR>:!clear <CR>:!python3 % <CR> | |
" You can split the window in Vim by typing :split or :vsplit. | |
" Navigate the split view easier by pressing CTRL+j, CTRL+k, CTRL+h, or CTRL+l. | |
" nnoremap <c-j> <c-w>j | |
" nnoremap <c-k> <c-w>k | |
" nnoremap <c-h> <c-w>h | |
" nnoremap <c-l> <c-w>l | |
" " Resize split windows using arrow keys by pressing: | |
" " CTRL+UP, CTRL+DOWN, CTRL+LEFT, or CTRL+RIGHT. | |
" noremap <c-up> <c-w>+ | |
" noremap <c-down> <c-w>- | |
" noremap <c-left> <c-w>> | |
" noremap <c-right> <c-w>< | |
" NERDTree specific mappings. | |
" Map the F3 key to toggle NERDTree open and close. | |
nnoremap <Space>e :NERDTreeToggle<CR> | |
" Have nerdtree ignore certain files and directories. | |
let NERDTreeIgnore=['\.git$', '\.jpg$', '\.mp4$', '\.ogg$', '\.iso$', '\.pdf$', '\.pyc$', '\.odt$', '\.png$', '\.gif$', '\.db$'] | |
" }}} | |
" VIMSCRIPT -------------------------------------------------------------- {{{ | |
" Enable the marker method of folding. | |
augroup filetype_vim | |
autocmd! | |
autocmd FileType vim setlocal foldmethod=marker | |
augroup END | |
" If the current file type is HTML, set indentation to 2 spaces. | |
autocmd Filetype html setlocal tabstop=2 shiftwidth=2 expandtab | |
" If Vim version is equal to or greater than 7.3 enable undofile. | |
" This allows you to undo changes to a file even after saving it. | |
if version >= 703 | |
set undodir=~/.vim/backup | |
set undofile | |
set undoreload=10000 | |
endif | |
" You can split a window into sections by typing `:split` or `:vsplit`. | |
" Display cursorline and cursorcolumn ONLY in active window. | |
augroup cursor_off | |
autocmd! | |
autocmd WinLeave * set nocursorline nocursorcolumn | |
autocmd WinEnter * set cursorline cursorcolumn | |
augroup END | |
" If GUI version of Vim is running set these options. | |
if has('gui_running') | |
" Set the background tone. | |
set background=dark | |
" Set the color scheme. | |
colorscheme molokai | |
" Set a custom font you have installed on your computer. | |
" Syntax: <font_name>\ <weight>\ <size> | |
set guifont=Monospace\ Regular\ 12 | |
" Display more of the file by default. | |
" Hide the toolbar. | |
set guioptions-=T | |
" Hide the the left-side scroll bar. | |
set guioptions-=L | |
" Hide the the left-side scroll bar. | |
set guioptions-=r | |
" Hide the the menu bar. | |
set guioptions-=m | |
" Hide the the bottom scroll bar. | |
set guioptions-=b | |
" Map the F4 key to toggle the menu, toolbar, and scroll bar. | |
" <Bar> is the pipe character. | |
" <CR> is the enter key. | |
nnoremap <F4> :if &guioptions=~#'mTr'<Bar> | |
\set guioptions-=mTr<Bar> | |
\else<Bar> | |
\set guioptions+=mTr<Bar> | |
\endif<CR> | |
endif | |
" }}} | |
" STATUS LINE ------------------------------------------------------------ {{{ | |
" Clear status line when vimrc is reloaded. | |
set statusline= | |
" Status line left side. | |
set statusline+=\ %F\ %M\ %Y\ %R | |
" Use a divider to separate the left side from the right side. | |
set statusline+=%= | |
" Status line right side. | |
"set statusline+=\ ascii:\ %b\ hex:\ 0x%B\ row:\ %l\ col:\ %c\ percent:\ %p%% | |
" Show the status on the second to last line. | |
set laststatus=2 | |
" }}} | |
" | |
" | |
" | |
" | |
" for ALE errors | |
function! LinterStatus() abort | |
let l:counts = ale#statusline#Count(bufnr('')) | |
let l:all_errors = l:counts.error + l:counts.style_error | |
let l:all_non_errors = l:counts.total - l:all_errors | |
return l:counts.total == 0 ? 'OK' : printf( | |
\ '%d⨉ %d⚠ ', | |
\ all_non_errors, | |
\ all_errors | |
\) | |
endfunction | |
let g:ale_lint_on_enter = 0 | |
let g:ale_lint_on_save = 1 | |
let g:ale_sign_error = '●' | |
let g:ale_sign_warning = '.' | |
let g:UltiSnipsExpandTrigger="<S-t>" | |
let g:UltiSnipsJumpForwardTrigger="<S-f>" | |
let g:UltiSnipsJumpBackwardTrigger="<S-b>" | |
" If you want :UltiSnipsEdit to split your window. | |
let g:UltiSnipsEditSplit="vertical" | |
set statusline+=%= | |
set statusline+=\ %{LinterStatus()} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment