Vim: Difference between revisions

From wikinotes
 
No edit summary
Line 1: Line 1:
Vim is a text-editor inspired by ''ed'' the line editor. It's core philosophy centers around having different hotkeys for different modes.
A fast, customizable, cross platform mode based text editor that usually runs in a console.
For example, regular typing is performed in ''insert'' mode, navigation is done in ''normal'' mode, selection is done in ''visual'' mode,
 
and commands are interpreted in ''command'' mode.
Vim is uniqe in that it is modal:
 
* text is written in ''insert'' mode
* navigation is performed in ''normal'' mode
* selections made in ''visual'' mode
* commands entered in ''command'' mode
 
Each has it's own keybindings.


It is fast, customizable, and available on virtually any platform.


= Documentation =
= Documentation =

Revision as of 17:33, 17 July 2021

A fast, customizable, cross platform mode based text editor that usually runs in a console.

Vim is uniqe in that it is modal:

  • text is written in insert mode
  • navigation is performed in normal mode
  • selections made in visual mode
  • commands entered in command mode

Each has it's own keybindings.


Documentation

:help https://vimhelp.org/

Locations

~/.vimrc

%HOMEDRIVE%%HOMEPATH%/_vimrc

vim's configuration file
~/.vim

%HOMEDRIVE%%HOMEPATH%/vimfiles

contains vim plugins, colourschemes... anything else vim makes use of

Terminology

buffer
register
macro

Install

# archlinux (packages have most languages preinstalled)
pacman -S vim
pacman -S gvim

# freebsd


# ubuntu (default package minimal, noXorg variant has all)
sudo apt install -y vim-nox

Usage

vim commandline
vim keybindings
vim commands
vim folding
vim tips/tricks
vim ctags

Scripting

viml
vim plugins

Tools

vim diff

Behaviour

Buffers

Buffers are any text that vim stores. It is typically associated with a file

Registers

Registers are places where you can copy text to for processing. There is the system clipboad register, the standard vim register, named registers, etc. Registers are accessed by using " followed by a letter(the register), and then the operation you want to perform on it. When yanking, if you use a capital letter, you will append to your register instead of replacing it.

@                                       ""The yank-text register
"zyy					""Copy Line under text to register 'z'
"Zyy					""Append Line under text to existing register 'z'
"zp					""Paste register 'z'

let var = @z		""Save contents of register 'z' to a variable

You can also record expressions to registers.

let @* = expand('%:p')  " copy current filepath to clipboard

Filetypes

sometimes you want to use syntax highlighting for files that aren't really programs. sometimes you want certain programs to be recognized as their proper filetype while using a different extension.

set filetype=python       #sets current filetype to python
set filetype=?            #query current filetype

au BufRead,BufNewFile *.cpy set filetype=python   #auto associate filetypes with extensions (in your .vimrc)

Macros

q<letter>    # start recording macro bound to <letter>
q            # stop recording

@<letter>    # play-back recording