138 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			138 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Useful Commands | ||
|  | --- | ||
|  | # Useful Commands
 | ||
|  | 
 | ||
|  | ## Basic functionality
 | ||
|  | 
 | ||
|  | Most likely you'll find yourself in "normal" mode, it allows you to enter commands by pressing the colon `:` key. | ||
|  | To get here from other modes you can type `ctrl + c` or `escape`. | ||
|  | 
 | ||
|  | To edit text and move around in a familiar way press `i`, for "insert" mode. Try to move around with the arrow keys in "insert" mode - see the "Navigation" section below for details. | ||
|  | 
 | ||
|  | Depending on the configuration, you may enter a file browser by typing and entering the command `:e .` in "normal" mode. The 'e' stands for edit, and the period for the file or directory. | ||
|  | 
 | ||
|  | ## Navigation
 | ||
|  | - Cursor movement: you can use either the arrow keys or `h`, `j`, `k`, `l` (left, down, up, right) | ||
|  | - `gg` brings you to the start of the file | ||
|  | - `G` brings you to the end of the file | ||
|  | - `:(num)` brings you to a specific line in your file (ex- :42 brings you to line 42) | ||
|  | 
 | ||
|  | ## Saving
 | ||
|  | 1. Press `Escape` to make sure you're in `normal mode`; | ||
|  | 2. Type in `:w` ("w" stands for "write"); | ||
|  | 3. Press `Enter`. | ||
|  | 
 | ||
|  | ## Saving (to a new file)
 | ||
|  | 1. Press `Escape` to make sure you're in `normal mode`. | ||
|  | 2. Type in `:w newfilename` (newfilename is the file name of the new file that you want to save to). | ||
|  | 3. Press `Enter`. | ||
|  | 
 | ||
|  | ## Exiting Vi, Vim, Nvim, Gvim
 | ||
|  | 1. Press escape to get you into "normal" mode | ||
|  | 2. `:q` will soft quit vim  | ||
|  | 3. `:q!` will force quit vim  | ||
|  | 4. `:qa` this will close all files open  | ||
|  | 5. `:qa!` closes all files while abandoning changes  | ||
|  | 6. `:q` saves and closes current file | ||
|  | 
 | ||
|  | (NOTE: The command `:q!` will force Vim to exit without saving. Make sure you save first by typing the command `:w` if you do not want to lose any changes you've made.) | ||
|  | 
 | ||
|  | **OR** | ||
|  | 
 | ||
|  | - Type ZZ (save and quit) | ||
|  | - Type `:wq`/`:x` (save and quit but using with the commonly used "w" and "q" commands) | ||
|  | 
 | ||
|  | ## Cut, Copy, and Paste
 | ||
|  | - `dd` deletes (cuts) a single line | ||
|  | - `yy` yanks (copies) a single line | ||
|  | - you can use `yy` and `dd` preceded by a number to cut or copy multiple lines (ex- `13dd` will cut 13 lines) | ||
|  | - `p` pastes everything from paste buffer | ||
|  | 
 | ||
|  | ## Pasting blocks of code
 | ||
|  | 
 | ||
|  | Very often you will find yourself looking for solutions to problems, and finding someone has written a block of code that does exactly what you want. | ||
|  | If you try to copy and paste the code directly into Vim you might find that the code is weirdly formatted or hasnt't been pasted correctly. | ||
|  | This is due to the fact that Vim reads each character that you paste one after the other, meaning any key-combinations that activates a Vim shortcut will be executed and Vim will try (and fail) to automatically indent the pasted code. | ||
|  | 
 | ||
|  | To overcome this you can use Vim's **Paste mode** which you can activate by entering normal mode (press `escape` or `crtl + c`) and type `:set paste`, then press ENTER. | ||
|  | You are now in *paste* mode. | ||
|  | You can then enter insert mode with `i` and paste the block of text/code without any issues! | ||
|  | To return to regular Vim without paste mode you can enter normal mode (`escape` or `crtl + c`) and type `:set nopaste`, and press ENTER. | ||
|  | 
 | ||
|  | ## Setting line numbers
 | ||
|  | 1. Press escape to get you into "normal" mode | ||
|  | 2. Type `:set number`, press enter | ||
|  | 
 | ||
|  | To set line numbers on by default: | ||
|  | 1. Open/create the vim configuration file with `vim ~/.vimrc` | ||
|  | 2. Add the line `set number`, press enter | ||
|  | 
 | ||
|  | ## Opening a file within VIM
 | ||
|  | In VIM you can open a file within the same window by setting your cursor on a path and typing `gf`.  This will tell VIM that the current text that the cursor resides is a file that you want to open.  The file will open up within the VIM terminal so if you want to return to the previous window just type `ctrl+o`.  This will tell VIM to go to the previous screen. | ||
|  | 
 | ||
|  | ## How to split windows 
 | ||
|  | You can split vim windows and edit 2 or more files at the same time.  | ||
|  | - `:split`  -> split window (horizontal) | ||
|  | - `:vsplit` -> split window (vertical) | ||
|  | - `:vertical` new -> open a new file in a new window | ||
|  | 
 | ||
|  | To move between windows you can use the following commands: | ||
|  | 
 | ||
|  | - `CTRL-W h` - move to the window on the left | ||
|  | - `CTRL-W j` - move to the window below | ||
|  | - `CTRL-W k` - move to the window above | ||
|  | - `CTRL-W l` - move to the window on the right | ||
|  | - `CTRL-W t` - move to the top window | ||
|  | - `CTRL-W b` - move to the bottom window | ||
|  | 
 | ||
|  | ## Undo/Redo
 | ||
|  | 
 | ||
|  | These actions should be performed in __Normal Mode__. | ||
|  | 
 | ||
|  | __Undo__: Press `u` or type in `:undo` and press `Enter`. | ||
|  | 
 | ||
|  | __Redo__: Press `U` (`Shift` + `u`) or type in `:redo` and press `Enter`. | ||
|  | 
 | ||
|  | ## Opening a file in a specific line
 | ||
|  | - vi filename +n, where n is the line number | ||
|  | 
 | ||
|  | ## Opening a file searching for word/term
 | ||
|  | - vi filename +/word, where word is what you are looking for. The cursor will be positioned on the first occurence of the word. | ||
|  | 
 | ||
|  | ## Searching a file in Vim
 | ||
|  | 
 | ||
|  | When in normal mode (press the `escape` key to make sure), you can search for any term in the document by typing `/`, followed by the term you're looking for, and then pressing `enter`. For example, type `/hello` and press `enter` to search for the word "hello" in the current file. | ||
|  | 
 | ||
|  | You can skip to the next occurrence of your search term by pressing `n`, or the previous occurrence by pressing `N`. `*` searches for the word underneath the cursor. | ||
|  | 
 | ||
|  | If you want to highlight all the search matches type `:set hlsearch` or use the abbreviated command `:set hls`. Use `:set noh` to turn off highlighting until the next search. | ||
|  | 
 | ||
|  | ## Compiling a Project
 | ||
|  | Vim has very tight integration with the `make` build automation tool. If your project uses a Makefile, you can type `:make` at the Vim command line in order to run your system's `make` tool. Vim will print the output of `make` on the screen and bring you to the first error, if any, when the `make` command completes. You can then jump through the compilation errors and warnings in your project's code by using the `:cn` and `:cp` commands, for next and previous issues respectively. | ||
|  | 
 | ||
|  | ## Find and Replace
 | ||
|  | 1. Press `Escape` to make sure your are in `normal mode`; | ||
|  | 2. Type in `:` (You will switch to `command mode`); | ||
|  | 3. Type `%s,word_to_be_replaced,new_word,g`; | ||
|  | 4. Press `ENTER`. | ||
|  | 
 | ||
|  | Important: if you want to replace the first occurence of the word, remove the `g` at the end. | ||
|  | 
 | ||
|  | ## I Want to Learn Vim!
 | ||
|  | 
 | ||
|  | For total beginners, Vim comes with a built in tutorial! You can access it by running `vimtutor` from your terminal and this will launch an interactive tutorial on *how to get started with Vim* (takes around 15 minutes to work through). | ||
|  | 
 | ||
|  | If you are not as confident in English, you can lanch `vimtutor` in your language of choice. For example `vimtutor fr` will launch the tutorial in french! | ||
|  | 
 | ||
|  | ## Other Useful Commands
 | ||
|  | - `gg=G` fixes the indentation of the entire file | ||
|  | - If you want to learn more about a specific command, type `:help` followed by the command name (ex- :help :w) | ||
|  | 
 | ||
|  | Read the rest of our Vim Guides to get a better understanding of this powerful editor. | ||
|  | 
 | ||
|  | ## Other Resources
 | ||
|  | - [Vim Golf](https://vimgolf.com/) - A good way to learn from doing vim challenges to get the lowest amount of keystrokes. You can see solutions submitted by others if you can't figure the challenge out. | ||
|  | - [Vim Adventures](https://vim-adventures.com/) - A fun and gamified approach to learn Vim where you lern the different key strokes with every new level in the game. | ||
|  | - <a href='http://www.openvim.com/' target='_blank' rel='nofollow'>Open Vim</a> - An interactive vim tutorial that teaches basic commands |