The following guidelines will help you to setup and use your Vim text editor effectively when working with NTS files and navigating into the code.
Vim is a modal text editor, meaning it operates in different modes, each tailored to a specific type of interaction:
: to run commands like saving or opening files.Understanding the modes is key to using Vim efficiently.
Switch between modes:
i, a, o to enter Insert mode.Esc to return to Normal mode.: in Normal mode to enter Command-line mode.v, V, or Ctrl-v for Visual modes (character, line, block).If you're new to Vim, we strongly encourage to run vimtutor from a terminal. It's an excellent interactive guide to learn the basics and use Vim effectively in few minutes.
h, j, k, l: move left, down, up, right.w, b: move forward/backward by word.0, ^, $: move to beginning of line, first non-whitespace, end of line.gg, G: go to top or bottom of file.:n: go to line number n.dd: delete line.yy: copy (yank) line.p: paste below.u: undo.Ctrl+r: redo.:w: save.:q: quit.:wq: save and quit.:e filename: open file.:tabe filename: open a new file in a new tab (tabpage). Navigate between tabs with gt (next tab) and gT (previous tab).:vsp filename: open file in vertical split.:sp filename: open file in horizontal split.Ctrl-w h/j/k/l: switch between split windows.:s/toto/titi/gc: replace all occurrences of toto by titi in the whole file (%) with confirmation (c asks before each substitution)./pattern: search forward.?pattern: search backward.n / N: repeat search in same/opposite direction.:noh: remove highlighting.Vim's Visual mode is extremely powerful for selecting and editing text blocks:
v: enter character-wise visual mode.V: enter line-wise visual mode.Ctrl-v: enter block-wise (column/rectangular) visual mode.Once in block mode (Ctrl-v), you can:
hjkl to select a block.I followed by a string and <Esc> to insert that string at the beginning of every selected line.A followed by a string and <Esc> to append text at the end of each selected line.d, y, p to delete, yank, or paste block selections.This makes it easy to, for example, insert a comment character at the start of multiple lines or align columns of text.
To enable proper syntax highlighting and filetype detection for Notus files in Vim, follow these steps:
mkdir -p "${HOME}/.vim/{ftdetect,syntax}"
cp tools/vim_syntax/ftdetect/nts.vim "${HOME}/.vim/ftdetect"
cp tools/vim_syntax/syntax/nts.vim "${HOME}/.vim/syntax"
This setup allows Vim to automatically detect .nts files as Notus-specific and apply custom syntax highlighting.
Replace tabulation with spaces (4) is necessary to write NTS files with uniform indentation. You can use a custom configuration file (~/.vimrc) to define your preferred settings.
This file is automatically loaded by Vim at startup and defines editor behavior (indentation, colors, plugins, etc.).
Below is a sample .vimrc file you can use as a base configuration:
"enable syntax highlighting
syntax enable
" show line numbers
set number
" set tabs to have 4 spaces
set ts=4
" indent when moving to the next line while writing code
set autoindent
" expand tabs into spaces
set expandtab
" when using the >> or << commands, shift lines by 4 spaces
set shiftwidth=4
" show a visual line under the cursor's current line
set cursorline
" show the matching part of the pair for [] {} and ()
set showmatch
" enable highlighting search results
set hlsearch
" enable incremental search
set incsearch
" draw a vertical line at column 80
set colorcolumn=80
" install vim-plug if it's missing
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
" plugin section starts here
call plug#begin('~/.vim/plugged')
" EditorConfig for consistent code formatting
Plug 'editorconfig/editorconfig-vim'
" Status line customization
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" Comment/uncomment code easily
Plug 'preservim/nerdcommenter'
" Fuzzy file finder
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
call plug#end()
" disable fancy fonts in airline
let g:airline_powerline_fonts = 0
" use 'elflord' color scheme
colorscheme elflord
" customize tab highlight color
highlight TabLineSel ctermfg=Red ctermbg=Yellow
" nerdcommenter custom delimiters for .nts files
let g:NERDCustomDelimiters = {
\ 'nts': { 'left': '#' },
\ }
" remove all trailing whitespace by pressing F7
nnoremap <F7> :let _s=@/<Bar>:%s/\s\+$//e<Bar>:let @/=_s<Bar><CR>
Find here a list of very useful Vim shortcuts and here an HTML version of the Vim help pages.