# Vim ## TL;DR ```sh # Go to a particular line. 42G 42gg :42 # Delete all file's lines. :1,$d # Substitute 4-spaces indentations with tabs. :%s/ /\t/g # Enable auto indentation per file type. :filetype plugin indent on # Render existing tab as 4 spaces in width. :set tabstop=4 # Insert 4 spaces of width when indenting with '>'. :set shiftwidth=4 # Insert 4 spaces when indenting with 'tab'. :set expandtab # Align the file to the current indentation settings. :retab # Get help on something. :help modeline ``` ## Modelines Set different options for a particular file. > The `modeline` option must be enabled in order to take advantage of this. > This option is **set** by default for Vim running in nocompatible mode, but some notable distributions of Vim disable it in the system's `vimrc` for security. In addition, the option is **off** by default when editing as `root`. See `:help modeline` for more information. The modeline line needs to: - be placed near the top of the file; how near, will depend on the modeline settings - start with a comment opening for the file type. > The space between the comment opening and 'vim' is necessary for the modeline to be recognized. Examples: ```txt # vim: set expandtab: # -*- mode: ruby -*- # vi: set ft=ruby : /* ex: set ts=8 sw=4 tw=0 noet : */ ``` ## Sources - [Modeline magic] - [Embed vim settings in file] - [Basic vimrc] - [Set whitespace preferences by filetype] [basic vimrc]: https://github.com/amix/vimrc/blob/master/vimrcs/basic.vim [embed vim settings in file]: https://stackoverflow.com/questions/3958416/embed-vim-settings-in-file#3958516 [modeline magic]: https://vim.fandom.com/wiki/Modeline_magic [set whitespace preferences by filetype]: https://stackoverflow.com/questions/1562633/setting-vim-whitespace-preferences-by-filetype#1563552