Главная >> Инструкции >> Настройка Vim

Настройка Vim

Vim - это очень сложный, но в то же время очень популярный текстовый редактор текста среди пользователей операционных систем Linux. Программа позволяет перемещаться по тексту и выполнять большинство действий с помощью клавиатуры, это очень сильно ускоряет работу за компьютером, поэтому что вам не надо постоянно переносить руку на мышь и обратно.

В нескольких предыдущих статьях я рассказывал про основы работы с Vim и основные команды программы, сегодня же хочу поговорить о настройке и персонализации программы. Добавление нескольких строчек в конфигурационный файл может сделать Vim намного удобнее. Несмотря на то, что в тексте я буду писать Vi, речь будет идти про современную версию редактора - Vim.


Содержание статьи

Настройка редактора Vim

Основной конфигурационный файл Vim находится в папке /etc/. Это файл /etc/vimrc/vimrc. Кроме того, для каждого отдельного пользователя можно настроить Vi с помощью локального конфигурационного файла, который находится в домашней папке ~/.vimrc. Вы можете использовать тот файл, который вам надо, например:

vim ~/.vimrc

Я рекомендую комментировать если не каждую строчку, то хотя бы каждую секцию, потому что если вы этого не будете делать, то потом не разберетесь что и зачем добавляли. Для комментария добавьте перед строкой символ кавычки - ".

1. Отступы и нумерация строк

Если вы собрались программировать в Vi, то вам надо обязательно разобраться с отступами. В стандартах многих языков программирования рекомендуется использовать пробелы вместо табов, а каждый отступ оформлять фиксированным количеством пробелов, например, стандарт Python PEP-8 рекомендует использовать четыре пробела. Чтобы это настроить добавьте такие строки:

set expandtab
set smarttab
set tabstop=4
set softtabstop=4
set shiftwidth=4

Переменная expandtab включает замену табов на пробелы, tabstop - количество пробелов в одном обычном табе, softtabstop - количество пробелов в табе при удалении, smarttab - при нажатии таба в начале строки добавляет количество пробелов равное shiftwidth.

Чтобы добавить нумерацию строк добавьте такую команду:

set number

Раз мы уже заговорили про отступы, давайте сделаем ещё небольшой отступ между левой частью окна:

set foldcolumn=2

2. Внешний вид

Для редактора доступно несколько цветовых схем. Вы можете посмотреть все доступные схемы открыв редактор и набрав там команду :colorscheme, затем пробел, а затем Tab:

Для выбора цветовой схемы на постоянной основе добавьте в конфигурационный файл такую строчку

colorscheme имя_цветовой_схемы

Например:

colorscheme delek

Для многих языков программирования есть подсветка синтаксиса, чтобы её включить добавьте:

syntax on

3. Звук

При нажатии неверной клавиши или ошибке в Vim проигрывается специальный звук. Если он вам мешает, его можно отключить:

set noerrorbells
set novisualbell

4. Поддержка мыши

Если вы работаете в графическом окружении, то, возможно, вам понадобиться поддержка мышки. Поддержка может быть добавлена в несколько режимов работы программы:

  • n - обычный режим;
  • v - визуальный режим (режим выделения);
  • i - режим вставки;
  • c - режим командой строки;
  • a - все перечисленные ранее режимы;
  • r - для режима "Нажмите Enter" или запроса ввода информации.

В большинстве случаев чтобы включить мышку во всех режимах программы достаточно добавить такую строчку:

set mouse=a

Также можно включить мышку только в визуальном режиме:

set mouse=v

Или вовсе её отключить:

set mouse=

При включённой поддержке мыши, вы все ещё можете копировать текст в системный буфер обмена, для этого просто зажмите клавишу Shift.

5. Настройка привязок

Очень полезная возможность Vim - это настройка своих привязок клавиш. Для этого существует функция map. Она похожа на alias в Linux и сообщает программе, что если мы вводим что-то, то хотим сделать ещё что-то. Здесь прежде чем переходить к настройке нужно понять как это работает. Синтаксис map простой:

map набор_символов_или_сочетание_клавиш на_что_заменить

Откройте редактор и выполните там команду:

:map losst <ESC>iHello world!<CR>

При вводе набора символов losst программа нажимает клавишу Esc, затем вводит i чтобы перейти в режим редактирования, потом пишет приветствие и добавляет символ перевода строки. Клавиши, которые надо нажать пишутся в скобках <>.

Мы рассмотрели общую команду map, но существуют также отдельные команды для других режимов:

  • nmap - нормальный режим;
  • vmap - визуальный режим;
  • omap - режим, когда выбран оператор действия (y,p или d);
  • cmap - режим командной строки;
  • imap - режим вставки.

Кроме того есть не рекурсивный вариант команды. Например, если на слово Hello назначить ещё одну замену, то в нашем примере она сработает. Но в не рекурсивном варианте всё равно будет вставлено Hello. Не рекурсивные варианты команды тоже есть для всех режимов, это noremap, vnoremap, nnoremap, onoremap, cnoremap и inoremap.

Но это ещё не всё. В начале пользовательских привязок клавиш принято использовать клавишу <leader> по умолчанию это обратный слеш. Например, если сделать вот так:

:map <leader>losst <ESC>iHello world!<CR>

Тогда для выполнения этой привязки надо набрать \losst. Использовать обратный слеш не всегда удобно, поэтому часто его заменяют на запятую. Для этого в конфигурационный файл надо добавить:

let mapleader = ","

Теперь вы знаете как настроить привязки клавиш в vim и что это всё означает. Теперь можно добавить сочетание клавиш для быстрого сохранения:

nmap <leader>w :w!<cr>

Поиск дальше нажатием пробела:

map <space> /

Поиск предыдущего вхождения по нажатию Ctrl+Пробел:

map <C-space> ?

Более удобное перемещение между открытыми вкладками редактора:

map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l

Включение или отключение проверки орфографии:

map <leader>ss :setlocal spell!<CR>

Таким образом, вы можете сделать более удобным и быстрым любое действие в редакторе.

6. Буфер обмена

Vim использует специальный внутренний буфер обмена для копирования и вставки текста, он никак не связан с системным. Постоянная проблема пользователей Vim в графическом интерфейсе, это невозможность что-либо скопировать непосредственно из визуального режима Vim в системный буфер обмена. Если окно редактора пусто, нет никаких дополнительных настроек или плагинов, можно просто копировать текст из терминала, но если запустить vim в tmux или screen, то тут уже возникнет проблема. Она решается. В Vim существуют специальные регистры для системного буфера обмена, это + и *. К ним можно получить доступ с помощью клавиши ".

Но сначала надо убедится, что ваша версия Vim поддерживает работу с системным буфером обмена. Для этого выполните:

vim --version | grep clipboard

Если вы видите надпись +clipboard, значит всё хорошо. В противном случае надо искать другую версию vim. В Ubuntu или Debian для поддержки буфера обмена можно установить пакет vim-gtk:

sudo apt install vim-gtk

Теперь, когда вы нажмете "+y в визуальном режиме, выделенный текст будет скопирован в системный буфер обмена, а при нажатии "+p в обычном режиме, содержимое буфера обмена будет вставлено в позицию курсора. Для большего удобства можно добавить горячие клавиши:

inoremap <C-v> <ESC>"+pa
vnoremap <C-c> "+y
vnoremap <C-d> "+d

Теперь чтобы вставить из буфера vim будет достаточно нажать Ctrl+V, а для копирования в буфер обмена системы - Ctrl+C.

7. Настройка поиска

Давайте немного настроим поиск. Для того чтобы игнорировать регистр при поиске добавьте в конфигурационный файл:

set ignorecase
set smartcase

Подсвечивать результаты поиска:

set hlsearch

Чтобы программа подсказывала первое вхождение при вводе шаблона поиска добавьте:

set incsearch

8. Команды

Для сохранения, открытия нового файла в программе и выполнения многих других операций мы вводим команды. Но кроме предустановленных команд вы можете добавлять свои. Для этого используется такая конструкция:

command опции имя действие

В качестве действия может быть указано выполнение какой-либо команды, нажатие клавиш, как в случае с привязками или вызов какой-либо функции. Это очень обширная тема, поэтому я не буду трогать её в этой статье.

Добавьте такую строчку чтобы с помощью команды :W можно было сохранить файл, если он открыт не через sudo:

command! W execute 'w !sudo tee % > /dev/null' <bar> edit!

9. Плагины

Для Vim существует огромное количество различных плагинов и начиная с восьмой версии появилась своя система управления пакетами. Все пакеты должны располагаться в папке ~/.vim, подпапке pack/vendor/start или pack/vendor/opt. Файлы из подпапки start загружаются автоматически при старте программы, и из opt надо подгружать вручную.

Например, давайте установим такой популярный плагин, как NerdTree. Для этого просто склонируйте его с GitHub в эту папку:

git clone https://github.com/preservim/nerdtree.git ~/.vim/pack/vendor/start/nerdtree

После этого разработчики рекомендуют выполнить такую команду, чтобы загрузить страницы справки:

vim -u NONE -c "helptags ~/.vim/pack/vendor/start/nerdtree/doc" -c q

После этого вы можете запустить программу и набрать такую команду для активации панели выбора файлов:

:NERDTreeToggle

Можно добавить горячую клавишу на открытие панели, для этого добавьте в конфигурационный файл:

nmap <F6> :NERDTreeToggle<CR>

Установим для примера ещё один плагин, Vim , который позволяет выполнять unix команды прямо в командной строке редактора:

git clone https://tpope.io/vim/eunuch.git ~/.vim/pack/vendor/start/eunuch

Загрузка справки:

vim -u NONE -c "helptags ~/.vim/pack/vendor/start/eunuch/doc" -c q

Перезагрузите Vim и вы сможете пользоваться и этим плагином. Вообще, вы можете найти подробную инструкцию по установке любого нужного вам плагина на GitHub странице самого плагина.

10. Кодировка

Часто при открытии в Vim тестовых файлов с кириллическими символами, те отображаются неверно. Чтобы они отображались как надо следует выбрать кодировку UTF-8 по умолчанию:

set encoding=utf8

Также можно установить стандарт использования символов переноса строки в файлах:

set ffs=unix,dos,mac

В данном случае на первом месте находится вариант Unix, где для переноса строки используется только символ \n.

Выводы

В этой статье я постарался детально разобрать как выполняется настройка Vim. Вы узнали о базовых переменных, которые надо установить чтобы изменить внешний вид, о привязках клавиш, а также о том как устанавливать плагины. К тому же у нас получился такой файл ~/.vimrc:

"Табы и пробелы
set expandtab
set smarttab
set tabstop=4
set softtabstop=4
set shiftwidth=4
"Нумерация строк и отступ
set number
set foldcolumn=2
"Цветовая схема
colorscheme delek
syntax on
"Без звука
set noerrorbells
set novisualbell
"Мышь
set mouse=a
"Привязки
let mapleader = ","
nmap <leader>w :w!<CR>
map <space> /
map <C-space> ?
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l
map <leader>ss :setlocal spell!<CR>
inoremap <C-v> <ESC>"+pa
vnoremap <C-c> "+y
vnoremap <C-d> "+d
"Поиск
set ignorecase
set smartcase
set hlsearch
set incsearch
"Выход с sudo
command! W execute 'w !sudo tee % > /dev/null' <bar> edit!
"Кодировка
set encoding=utf8
"Тип переноса
set ffs=unix,dos,mac

Даже этот небольшой конфигурационный файл уже может сильно помочь вам в работе, а дальше останется только расширять его дополнительными командами и привязками клавиш. А какие команды и привязки используете вы? Какие плагины? Поделитесь в комментариях!

Оставьте свой Email для того чтобы получать анонсы новых статей и полезную информацию о Linux по электронной почте
Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

9 комментариев к “Настройка Vim”

  1. set nocompatible
    filetype off

    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()

    Plugin 'VundleVim/Vundle.vim'

    Plugin 'scrooloose/nerdtree'
    Plugin 'valloric/youcompleteme'
    Plugin 'xolox/vim-easytags'
    Plugin 'majutsushi/tagbar'
    Plugin 'tpope/vim-fugitive'
    Plugin 'easymotion/vim-easymotion'
    Plugin 'ctrlpvim/ctrlp.vim'
    Plugin 'terryma/vim-multiple-cursors'
    Plugin 'vim-airline/vim-airline'
    Plugin 'vim-airline/vim-airline-themes'
    Plugin 'scrooloose/nerdcommenter'
    Plugin 'matze/vim-move'
    Plugin 'raimondi/delimitmate'
    Plugin 'mattn/emmet-vim'
    Plugin 'scrooloose/syntastic'
    Plugin 'tpope/vim-surround'
    Plugin 'sirver/ultisnips'
    Plugin 'honza/vim-snippets'
    Plugin 'xolox/vim-session'
    Plugin 'xolox/vim-misc'
    Plugin 'SyntaxAttr.vim'
    Plugin 'dyng/ctrlsf.vim'
    Plugin 'rking/ag.vim'
    Plugin 'godlygeek/tabular'

    Plugin 'stanangeloff/php.vim'
    Plugin 'sumpygump/php-documentor-vim'
    Plugin 'arnaud-lb/vim-php-namespace'

    Plugin 'pangloss/vim-javascript'

    Plugin 'othree/html5.vim'

    Plugin 'evidens/vim-twig'

    Plugin 'mtscout6/vim-tagbar-css'

    Plugin 'damage220/solas.vim'
    Plugin 'nanotech/jellybeans.vim'
    Plugin 'mhartington/oceanic-next'

    call vundle#end()

    set tabstop=4
    set shiftwidth=4
    set softtabstop=4

    set autoread

    set autoindent
    set smartindent

    set encoding=utf-8
    set termencoding=utf-8

    set splitright

    set cursorline

    set nocp
    set nu
    set laststatus=2
    set ruler
    set nowrap
    syntax enable
    set background=dark
    colorscheme solas

    set visualbell t_vb=
    set novisualbell

    let g:session_autosave = 'no'

    set fileformat=unix
    set statusline=%f%m%r%h%w\ %y\ enc:%{&enc}\ ff:%{&ff}\ fenc:%{&fenc}%=(ch:%3b\ hex:%2B)\ col:%2c\ line:%2l/%L\ [%2p%%]

    Ответить
  2. "=============================================================================
    "=============================== BASIC SETTINGS ==============================
    "=============================================================================
    filetype plugin indent on
    highlight SpellBad ctermfg=Black ctermbg=Red
    hi StatusLine gui=reverse cterm=reverse
    set autoread
    set backup
    set browsedir=current
    set clipboard=unnamed
    set encoding=utf-8
    set hidden
    set history=128
    set mouse=a
    set nocompatible
    set noswapfile
    set sessionoptions=curdir,buffers,tabpages
    set t_Co=256
    set termencoding=utf-8
    set title
    set undolevels=2048

    "=============================================================================
    "============================== EDITOR SETTINGS ==============================
    "=============================================================================
    autocmd CursorMoved * silent! exe printf("match Search /\\/", expand(''))
    let c_syntax_for_h=""
    let python_highlight_all = 1
    set backspace=indent,eol,start
    set laststatus=2
    set linebreak
    set list
    set listchars=tab:>-,trail:-
    set mps+=
    set noruler
    set number
    set scrolloff=4
    set showcmd
    set showmatch
    set textwidth=80
    set visualbell
    set wrap
    syntax enable

    "=============================================================================
    "================================= COLORSCHEME ===============================
    "=============================================================================
    if empty(glob('~/.vim/colors/sublimemonokai.vim'))
    silent !curl -fLo ~/.vim/colors/sublimemonokai.vim --create-dirs
    \ https://raw.githubusercontent.com/ErichDonGubler/vim-sublime-monokai/master/colors/sublimemonokai.vim
    endif
    set background=dark
    colorscheme sublimemonokai

    "=============================================================================
    "============================ INDENTATION SETTINGS ===========================
    "=============================================================================
    set autoindent
    set expandtab
    set pastetoggle=
    set shiftwidth=4
    set smarttab
    set smartindent
    set softtabstop=4
    set tabstop=4
    au FileType crontab,fstab,make set noexpandtab tabstop=8 shiftwidth=8
    au FileType *.htm,*.html,*.css,*.js set softtabstop=2 tabstop=2 shiftwidth=2 textwidth=120

    "=============================================================================
    "===================== AUTO-COMPLETION OF INPUT (omnifunct) ==================
    "=============================================================================
    autocmd FileType python set omnifunc=pythoncomplete#Complete
    autocmd FileType tt2html set omnifunc=htmlcomplete#CompleteTags
    autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
    autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
    autocmd FileType css set omnifunc=csscomplete#CompleteCSS
    autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
    autocmd FileType php set omnifunc=phpcomplete#CompletePHP
    autocmd FileType c set omnifunc=ccomplete#Complete
    set completeopt=menu

    "=============================================================================
    "====================== COLLAPSING TEXT BLOCKS (folding) =====================
    "=============================================================================
    set foldenable
    "set foldmethod=syntax
    set foldmethod=indent
    set foldcolumn=1
    set foldlevel=2
    set foldopen=all
    set tags=tags\ $VIMRUNTIME/systags

    "=============================================================================
    "========================== FILE MANAGEMENT SETTINGS =========================
    "=============================================================================
    set fileformat=unix
    set fencs=utf-8,cp1251,koi8-r,cp866
    autocmd! bufwritepre $MYVIMRC call setline(1, '"" Last update: '.strftime("%d.%m.%Y %H:%M"))
    filetype on
    filetype plugin on
    filetype indent on
    autocmd FileType perl call SetPerlConf()
    set path=.,,**

    "=============================================================================
    "============================= TEXT SEARCH SETTINGS ==========================
    "=============================================================================
    map /
    map ?
    set ignorecase
    set incsearch
    set nohlsearch
    set smartcase
    vnoremap * :call VisualSearch()//
    vnoremap # :call VisualSearch()?/

    "=============================================================================
    "================================= PLUGINS ===================================
    "=============================================================================
    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

    call plug#begin('~/.vim/bundle')

    """""""""""""""""""""""""""""""""""""""""""""""""
    """""""""""" Code/Project Navigation """"""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'scrooloose/nerdtree' "
    Plug 'jistr/vim-nerdtree-tabs' "
    Plug 'majutsushi/tagbar' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """""""""""""""""""""" AWK """"""""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'vim-scripts/awk.vim' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """""""""""""""" HTML/CSS/XML """""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'tpope/vim-surround' "
    Plug 'othree/html5.vim' "
    Plug 'hail2u/vim-css3-syntax' "
    Plug 'shmargum/vim-sass-colors' "
    Plug 'ap/vim-css-color' "
    Plug 'Ioannis-Kapoulas/vim-autoprefixer' "
    Plug 'othree/xml.vim' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """"""""""""""""""""" Java """"""""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'uiiaoo/java-syntax.vim' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """"""""""""""""""" JavaScript """"""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'pangloss/vim-javascript' "
    Plug 'jelera/vim-javascript-syntax' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """"""""""""""""""""" Nginx """""""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'chr4/nginx.vim' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """""""""""""""""""""" PHP """"""""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'stanangeloff/php.vim' "
    Plug 'phpactor/phpactor' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """"""""""""""""""""" Python """"""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'klen/python-mode' "
    Plug 'nvie/vim-flake8' "
    Plug 'mitsuhiko/vim-jinja' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """"""""""""""""""""" Ruby """"""""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug 'vim-ruby/vim-ruby' "
    Plug 'tpope/vim-rails' "
    """""""""""""""""""""""""""""""""""""""""""""""""

    """""""""""""""""""""""""""""""""""""""""""""""""
    """"""""""""""""""""" Other """""""""""""""""""""
    """""""""""""""""""""""""""""""""""""""""""""""""
    Plug '907th/vim-auto-save' "
    Plug 'vim-syntastic/syntastic' "
    Plug 'ycm-core/YouCompleteMe' "
    Plug 'tpope/vim-fugitive' "
    Plug 'airblade/vim-gitgutter' "
    Plug 'fisadev/FixedTaskList.vim' "
    Plug 'vim-scripts/taglist.vim' "
    Plug 'frazrepo/vim-rainbow' "
    Plug 'itchyny/lightline.vim' "
    Plug 'preservim/nerdcommenter' "
    """""""""""""""""""""""""""""""""""""""""""""""""
    call plug#end()

    "=============================================================================
    "=============================== PLUGIN SETTINGS =============================
    "=============================================================================

    """""""""""""""""""""""""""""""""""""""
    """"""""""""""" NERDTree """"""""""""""
    """""""""""""""""""""""""""""""""""""""
    autocmd vimenter * NERDTree
    map :NERDTreeToggle
    :let g:NERDTreeWinSize=24
    let NERDTreeIgnore=['\.pyc$', '\~$']
    let NERDTreeMapOpenInTab='\r'

    """""""""""""""""""""""""""""""""""""""
    """""""""""""" Syntastic """"""""""""""
    """""""""""""""""""""""""""""""""""""""
    set statusline+=%#warningmsg#
    set statusline+=%{SyntasticStatuslineFlag()}
    set statusline+=%*
    let g:syntastic_always_populate_loc_list = 1
    let g:syntastic_auto_loc_list = 1
    let g:syntastic_check_on_open = 1
    let g:syntastic_check_on_wq = 0

    """""""""""""""""""""""""""""""""""""""
    """""""""""" FixedTaskList """"""""""""
    """""""""""""""""""""""""""""""""""""""
    map :TaskList

    Ответить
  3. Здравствуйте уважаемые. Никак не смог найти в сети инфу о том как удалить редактор vim/vi. Я удалял командой apt autoremove vim. Сегодня случайно ввел vi и открылось то же самое окошко. Это как понимать? Помогите удалить весь этот редактор.

    Ответить
    • У vi есть две версии - расширенная - vim и упрощённая vi. Для того чтобы удалить ещё и упрощённую удалите пакет vim.tiny:

      sudo apt-get remove vim.tiny

      Ответить

Оставьте комментарий