Here's a basic `.vimrc` file structured with documentation and functionality, including some commonly used settings and plugins. This example assumes you're using Vim 8+ or Neovim, which has built-in package management capabilities. You can further customize it according to your preferences. ```bash " .vimrc - Basic Configuration " Author: [Your Name] " Last Modified: [Date] " Ensure compatibility with older Vim versions if version < 700 echo "You need Vim 7.0 or greater" finish endif " Prevent loading this file more than once if exists("g:loaded_vimrc") finish endif let g:loaded_vimrc = 1 " ============================================================================== " General Settings " ============================================================================== " Set UTF-8 encoding set encoding=utf-8 set fileencoding=utf-8 " Use system clipboard set clipboard=unnamedplus " Enable syntax highlighting syntax on " Set tabs and spaces preferences for indentation set tabstop=4 " Number of visual spaces per TAB set softtabstop=4 " Number of spaces in tab when editing set shiftwidth=4 " Number of spaces to use for autoindent set expandtab " Convert tabs to spaces " Enable line numbers set number " Enable relative line numbers set relativenumber " Highlight current line set cursorline " Enable mouse support set mouse=a " Disable swap files set noswapfile " ============================================================================== " Search Settings " ============================================================================== " Highlight search results set hlsearch " Case-insensitive searching set ignorecase " Case-sensitive if contains uppercase set smartcase " Incremental search set incsearch " ============================================================================== " Visual Settings " ============================================================================== " Set color scheme colorscheme desert " Enable 256 colors set t_Co=256 " Set status bar set laststatus=2 " ============================================================================== " Plugin Management (Using Vim 8+ package feature) " ============================================================================== " Specify directory for plugins (change '~/.vim' to '~/.config/nvim' for Neovim) execute "set runtimepath^=~/.vim/pack/plugins/start" " Plug: vim-plug installation and setup " Note: For automatic installation, refer to vim-plug documentation " ============================================================================== " Plugins Configuration " ============================================================================== " Plug 'tpope/vim-surround' " Surround text with characters " Plug 'preservim/nerdtree' " File system explorer " Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Fuzzy finder " ============================================================================== " Key Bindings " ============================================================================== " Map leader key to space let mapleader=" " " NERDTree toggle nnoremap n :NERDTreeToggle " ============================================================================== " Custom Functions " ============================================================================== " Add your custom Vim functions here " ============================================================================== " Autocommands " ============================================================================== " Auto-close NERDTree on closing Vim if it's the last window autocmd vimexit * if !argc() | NERDTreeClose | endif " ============================================================================== " Final Touches " ============================================================================== " Filetype plugin indent on filetype plugin indent on " Enable spell checking for certain file types autocmd FileType gitcommit,markdown setlocal spell " ============================================================================== " End of .vimrc " ============================================================================== ``` This `.vimrc` example includes essential configurations for a smooth and efficient Vim experience, such as UTF-8 encoding, tab settings, line numbering, and search behaviors. It also outlines the use of Vim's package feature for plugin management, though the actual installation of plugins like `vim-plug` would require additional steps not covered directly in this file. For each plugin listed (e.g., `vim-surround`, `nerdtree`, `fzf`), you would typically clone the plugin's repository into the specified directory or use a plugin manager like `vim-plug` to automate their installation and updates. Remember, this is a starting point. As you grow more comfortable with Vim and your personal workflow evolves, you'll likely add, remove, or tweak these settings to better suit your needs.