Vim config file linux

Vim config file linux

Vim is a terminal text editor. It is an extended version of vi with additional features, including syntax highlighting, a comprehensive help system, native scripting (Vim script), a visual mode for text selection, comparison of files ( vimdiff(1) ), and tools with restricted capabilities such as rview(1) and rvim(1) .

Contents

Installation

Install one of the following packages:

  • vim — with Python 2/3, Lua, Ruby and Perl interpreters support but without GTK/X support.
  • gvim — which also provides the same as the above vim package with GTK/X support.

Usage

For a basic overview on how to use Vim, follow the vim tutorial by running either vimtutor (for the terminal version) or gvimtutor (for the graphical version).

Vim includes a broad help system that can be accessed with the :h subject command. Subjects include commands, configuration options, key bindings, plugins etc. Use the :h command (without any subject) for information about the help system and jumping between subjects.

Configuration

Vim’s user-specific configuration file is located in the home directory:

/.vimrc , and Vim files of current user are located inside

/.vim/ . The global configuration file is located at /etc/vimrc . Global Vim files such as defaults.vim and archlinux.vim are located inside /usr/share/vim/ .

For gVim, the user-specific configuration file is located at

/.gvimrc and the global configuration file is located at /etc/gvimrc .

/.vimrc is present. Add let skip_defaults_vim=1 to /etc/vimrc to disable loading of defaults.vim completely. [1]. Alternatively, to enable defaults.vim even when

/.vimrc is present, see :h defaults in vim.

  • gVim loads both Vim’s and gVim’s configuration file, while Vim only loads Vim’s configuration file.
  • Clipboard

    Vim commands such as :yank or :paste operate with the unnamed register, which by default corresponds to the «* register. If the +clipboard feature is available, the «* register is reflected to the PRIMARY buffer in X.

    To change the default register, you can :set clipboard=unnamedplus to use the «+ register instead. The «+ register corresponds to the CLIPBOARD buffer in X.

    For more information, see :help ‘clipboard’ .

    Syntax highlighting

    To enable syntax highlighting for many programming languages:

    Indentation

    This article or section needs expansion.

    The indent file for specific file types can be loaded with:

    Visual wrapping

    The wrap option is on by default, which instructs Vim to wrap lines longer than the width of the window, so that the rest of the line is displayed on the next line. The wrap option only affects how text is displayed, the text itself is not modified.

    The wrapping normally occurs after the last character that fits the window, even when it is in the middle of a word. More intelligent wrapping can be controlled with the linebreak option. When it is enabled with set linebreak , the wrapping occurs after characters listed in the breakat string option, which by default contains a space and some punctuation marks (see :help breakat ).

    Wrapped lines are normally displayed at the beginning of the next line, regardless of any indentation. The breakindent option instructs Vim to take indentation into account when wrapping long lines, so that the wrapped lines keep the same indentation of the previously displayed line. The behaviour of breakindent can be fine-tuned with the breakindentopt option, for example to shift the wrapped line another four spaces to the right for Python files (see :help breakindentopt for details):

    Читайте также:  Metasploit download kali linux

    Using the mouse

    Vim has the ability to make use of the mouse, but it only works for certain terminals:

    To enable this feature, add this line into

    The mouse=a option is set in defaults.vim .

    Traverse line breaks with arrow keys

    By default, pressing ← at the beginning of a line, or pressing → at the end of a line, will not let the cursor traverse to the previous, or following, line.

    The default behavior can be changed by adding set whichwrap=b,s, ,[,] to your

    Merging files

    Vim includes a diff editor (a program that shows differences between two or more files and aids to conveniently merge them). Use vimdiff to run the diff editor — just specify some couple of files to it: vimdiff file1 file2 . Here is the list of vimdiff-specific commands.

    Action Shortcut
    next change ]c
    previous change [c
    diff obtain do
    diff put dp
    fold open zo
    fold close zc
    rescan files :diffupdate

    Tips and tricks

    Line numbers

    To show the line number column, use :set number . By default absolute line numbers are shown, relative numbers can be enabled with :set relativenumber . Setting both enables hybrid line numbers—the current line is absolute, while the others are relative.

    Jumping to a specific line is possible with :line number or line numbergg . Jumps are remembered in a jump list, see :h jump-motions for details.

    Spell checking

    Vim has the ability to do spell checking, enable by entering:

    By default, only English language dictionaries are installed. More dictionaries can be found in the official repositories by searching for vim-spell . Additional dictionaries can be found in the Vim’s FTP archive. Additional dictionaries can be put in the folder

    /.vim/spell/ and enabled with the command: :setlocal spell spelllang=en_us (replacing the en_us with the name of the needed dictionary).

    Action Shortcut
    next spelling ]s
    previous spelling [s
    spelling suggestions z=
    spelling good, add zg
    spelling good, session zG
    spelling wrong, add zw
    spelling wrong, session zW
    spelling repeat all in file :spellr

    /.vimrc or /etc/vimrc , and then restart Vim.
    You can enable spell checking for arbitrary file types (e.g. .txt) by using the FileType plugin and a custom rule for file type detection. To enable spell checking for any file ending with .txt, create the file /usr/share/vim/vimfiles/ftdetect/plaintext.vim , and insert the line autocmd BufRead,BufNewFile *.txt set filetype=plaintext into that file. Next, insert the line autocmd FileType plaintext setlocal spell spelllang=en_us into your

    /.vimrc or /etc/vimrc , and then restart Vim. Alternatively, one can simply insert the line autocmd BufRead,BufNewFile *.txt setlocal spell into their

    /.vimrc or /etc/vimrc , and then restart Vim. Be sure to edit this line (specifically *.txt ) to include the filetype(s) intended for spell checking.
    To enable spell checking for LaTeX (or TeX) documents only, add autocmd FileType tex setlocal spell spelllang=en_us into your

    /.vimrc or /etc/vimrc , and then restart Vim.

    Saving runtime state

    Normally, exiting vim discards all unessential information such as opened files, command line history, yanked text etc. Preserving this information can be configured in the following ways.

    viminfo files

    The viminfo file may also be used to store command line history, search string history, input-line history, registers’ content, marks for files, location marks within files, last search/substitute pattern (to be used in search mode with n and & within the session), buffer list, and any global variables you may have defined. For the viminfo modality to be available, the version of vim you installed must have been compiled with the +viminfo feature.

    Читайте также:  Linux run file permission denied

    Configure what is kept in your viminfo file, by adding (for example) the following to your

    where each parameter is preceded by an identifier:

    See the official viminfo documentation for particulars on how a pre-existing viminfo file is modified as it is updated with current session information, say from several buffers in the current session you are in the process of exiting.

    Session files

    Session files can be used to save the state of any number of particular sessions over time. One distinct session file may be used for each session or project of your interest. For that modality to be available, the version of vim you installed must have been compiled with the +mksession feature.

    Within a session, :mksession[!] [my_session_name.vim] will write a vim-script to my_session_name.vim in the current directory, or Session.vim by default if you choose not to provide a file name. The optional ! will clobber a pre-existing session file with the same name and path.

    A vim session can be resumed either when starting vim from terminal:

    Or in an already opened session buffer by running the vim command:

    Exactly what is saved and additional details on session files options are extensively covered in the vim documentation. Commented examples are found here.

    Saving cursor position

    Replace vi command with Vim

    Create an alias for vi to vim .

    Alternatively, if you want to be able to type sudo vi and get vim , install vi-vim-symlink AUR which will remove vi and replace it with a symlink to vim . You could also create this symlink yourself and place it somewhere higher in your path than /usr/bin to have it take precedence.

    DOS/Windows carriage returns

    If there is a ^M at the end of each line then this means you are editing a text file which was created in MS-DOS or Windows. This is because in Linux only a single line feed character (LF) used for line break, but in Windows/MS DOS systems they are using a sequence of a carriage return (CR) and a line feed (LF) for the same. And this carriage returns are displayed as ^M .

    To remove all carriage returns from a file do:

    Note that there ^ is a control letter. To enter the control sequence ^M press Ctrl+v,Ctrl+m .

    Alternatively install the package dos2unix and run dos2unix file to fix the file.

    Empty space at the bottom of gVim windows

    When using a window manager configured to ignore window size hints, gVim will fill the non-functional area with the GTK theme background color.

    The solution is to adjust how much space gVim reserves at the bottom of the window. Put the following line in

    Vim as a pager

    Using scripts Vim can be used as a terminal pager, so that you get various vim features such as color schemes.

    Vim comes with the /usr/share/vim/vim82/macros/less.sh script, for which you can create an alias. Note that this script does not support any command-line flags mentioned in less(1) § OPTIONS .

    Alternatively there is also the vimpager Vim script. To change the default pager, export the PAGER environment variable. Note that not all command-line flags are supported; the list of supported flags is available on GitHub.

    Highlighting search results

    In order to highlight the first string that will be matched in a search while typing the search, add the following line to your

    Читайте также:  Драйвера для windows x64 foxconn

    In order to highlight all strings that will be matched in a search while typing the search, and after the search has been executed, add the following line to your

    Plugins

    Adding plugins to Vim can increase your productivity by extending Vim’s features. Plugins can alter Vim’s UI, add new commands, enable code completion support, integrate other programs and utilities with Vim, add support for additional languages and more.

    Installation

    Using the built-in package manager

    Vim 8 added the possibility to load third-party plugins natively. This functionality can be used by storing third-party packages in the

    /.vim/pack folder. The structure of this folder differs slightly from that of typical plugin managers which will usually have a single directory per plugin. What follows is a typical installation procedure and directory structure (using Tim Pope’s vim-surround plugin as an example):

    It is important to note that

    /.vim/pack/tpope is a package directory which is loosely defined as directory containing one or more plugins in the Vim documentation. Plugin repositories should not be downloaded to this directory though. The name of the package directory is also arbitrary. You can choose to keep all your plugins in a single package directory or, as in our example, use the author’s GitHub name, tpope .

    The package directory can contain the following subfolders:

    • start — plugins from this subfolder will be loaded automatically when Vim starts. This is the most frequently used location.
    • opt — plugins from this subfolder can be loaded on-demand by issuing :packadd command inside Vim.

    Now change into the start folder and checkout the plugin repository:

    This creates an additional subfolder,

    /.vim/pack/tpope/start/surround , where the plugin files are placed.

    Next, update the help index if the plugin contains help files:

    The plugin will now be loaded automatically when starting Vim. No changes to

    /.vimrc are required, barring plugin-specific options.

    Using a plugin manager

    A plugin manager is a plugin that installs, manages and updates Vim plugins. This can be useful if you are also using Vim on platforms other than Arch Linux and want a consistent method of updating plugins.

    • Vim-plug is a minimalist Vim plugin manager with many features like on-demand plugin loading and parallel updating, available as vim-plugAUR or vim-plug-gitAUR .
    • Vundle is available as vundleAUR or vundle-gitAUR .
    • pathogen.vim is a simple plugin for managing Vim’s runtimepath, available as vim-pathogenAUR or vim-pathogen-gitAUR .
    • Dein.vim is a plugin manager replacing NeoBundle, available as vim-deinAUR or vim-dein-gitAUR .

    From Arch repositories

    The vim-plugins group provides various plugins. Use pacman -Sg vim-plugins command to list available packages which you can then install with pacman.

    Notable plugins

    cscope

    Cscope is a tool for browsing a project. By navigating to a word/symbol/function and calling cscope (usually with shortcut keys) it can find: functions calling the function, the function definition, and more.

    Copy the cscope default file where it will be automatically read by Vim:

    /.vim/plugin/cscope_maps.vim in order to enable cscope shortcuts in Vim 7.x:

    Create a file which contains the list of files you wish cscope to index (cscope can handle many languages but this example finds .c, .cpp and .h files, specific for C/C++ project):

    Create database files that cscope will read:

    Default keyboard shortcuts:

    Feel free to change the shortcuts.

    Taglist

    Taglist provides an overview of the structure of source code files and allows you to efficiently browse through source code files in different programming languages.

    Useful options to be put in

    Troubleshooting

    gVim is slow

    Vim’s GTK 3 GUI may be slower than the GTK 2 version (see FS#51366). gvim-gtk2 AUR can be installed as a workaround.

    Источник

    Оцените статью