"Comments in Vimscript start with a `"`. " If you open this file in Vim, it'll be syntax highlighted for you. " Vim is based on Vi. Setting `nocompatible` switches from the default " Vi-compatibility mode and enables useful Vim functionality. This " configuration option turns out not to be necessary for the file named " '~/.vimrc', because Vim automatically enters nocompatible mode if that file " is present. But we're including it here just in case this config file is " loaded some other way (e.g. saved as `foo`, and then Vim started with " `vim -u foo`). set nocompatible " Turn on syntax highlighting. syntax on " Disable the default Vim startup message. set shortmess+=I " Show line numbers. set number " This enables relative line numbering mode. With both number and " relativenumber enabled, the current line shows the true line number, while " all other lines (above and below) are numbered relative to the current line. " This is useful because you can tell, at a glance, what count is needed to " jump up or down to a particular line, by {count}k to go up or {count}j to go " down. set relativenumber " Always show the status line at the bottom, even if you only have one window open. set laststatus=2 " The backspace key has slightly unintuitive behavior by default. For example, " by default, you can't backspace before the insertion point set with 'i'. " This configuration makes backspace behave more reasonably, in that you can " backspace over anything. set backspace=indent,eol,start " By default, Vim doesn't let you hide a buffer (i.e. have a buffer that isn't " shown in any window) that has unsaved changes. This is to prevent you from " " forgetting about unsaved changes and then quitting e.g. via `:qa!`. We find " hidden buffers helpful enough to disable this protection. See `:help hidden` " for more information on this. " set hidden " This setting makes search case-insensitive when all characters in the string " being searched are lowercase. However, the search becomes case-sensitive if " it contains any capital letters. This makes searching more convenient. set ignorecase set smartcase " Enable searching as you type, rather than waiting till you press enter. set incsearch " Unbind some useless/annoying default key bindings. nmap Q " 'Q' in normal mode enters Ex mode. You almost never want this. " Disable audible bell because it's annoying. set noerrorbells visualbell t_vb= " Enable mouse support. You should avoid relying on this too much, but it can " sometimes be convenient. set mouse+=a " Try to prevent bad habits like using the arrow keys for movement. This is " not the only possible bad habit. For example, holding down the h/j/k/l keys " for movement, rather than using more efficient movement commands, is also a " bad habit. The former is enforceable through a .vimrc, while we don't know " how to prevent the latter. " Do this in normal mode... nnoremap :echoe "Use h" nnoremap :echoe "Use l" nnoremap :echoe "Use k" nnoremap :echoe "Use j" " ...and in insert mode inoremap :echoe "Use h" inoremap :echoe "Use l" inoremap :echoe "Use k" inoremap :echoe "Use j" " Highlight cursor line underneath the cursor horizontally set cursorline " " Highlight cursor line underneath the cursor vertically set cursorcolumn " Show the mode you are on the last line. set showmode " Do not let cursor scroll below or above N number of lines when scrolling. set scrolloff=15 " 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 " Highlight matching parentheses set showmatch " Map semicolon to colon except if double pressed nnoremap ; ; map ; : set shiftwidth=4 smarttab set expandtab set tabstop=8 softtabstop=0 " VimPlug Section call plug#begin() " Add your plugins here Plug 'github/copilot.vim' , { 'rtp': '~/.config/nvim/pack/github/start/copilot.vim' } call plug#end()