Хотите верьте, хотите нет, но я использую Vim в качестве повседневного текстового процессора. Мне нравится его простой макет и модальный дизайн, в котором предпочтение отдается команды клавиатуры над щелчками мыши.
Хотя вы, вероятно, знаете Vim как текстовый редактор, больше подходящий для кодирования, чем для прозы, с некоторыми изменениями вы тоже можете писать документы так же, как в Word или LibreOffice, оставаясь при этом в удобных пределах терминала.
Читайте также: Как использовать ярлыки Vim для навигации по веб-браузеру
Начало работы
Если вы еще не ознакомились с основами Vim, ознакомьтесь с Эта статья , первым из четырех. Прежде чем углубляться в эту часть, обязательно научитесь открывать текстовый файл, входить в программу и выходить из нее, а также перемещаться по экрану с помощью клавиатуры.
Установка
Ваш дистрибутив Linux, вероятно, поставляется с Vim в репозитории пакетов, п
Contents
Начало работы
установить его с помощью менеджера программного обеспечения или менеджера пакетов. Когда вы позже отредактируете файл конфигурации Vim, вы сможете сделать это как обычный пользователь.Arch Linux:
sudo pacman -S vim
Fedora:
sudo dnf install vim
Ubuntu:
sudo apt install vim
Все остальные могут загрузить Vim из репозитория Github:
git clone https://github.com/vim/vim.git cd ./vim/src/ make sudo make install
Файл конфигурации Vim
При установке Vim в вашем домашнем каталоге может быть создан файл.vimrc. Если нет, создайте его:
touch ~/.vimrc
Вы можете открыть его с помощью самого Vim:
cd vim .vimrc
Наш текстовый процессор
Сейчас вы, вероятно, смотрите на пустой файл. Давайте изменим это.
Мы можем создать функцию под названием «WordProcessor», которую вы сможете вызывать в любое время. Это будет выглядеть так:
func! WordProcessor() " movement changes map j gj map k gk " formatting text setlocal formatoptions=1 setlocal noexpandtab setlocal wrap setlocal linebreak " spelling and thesaurus setlocal spell spelllang=en_us set thesaurus+=/home/test/.vim/thesaurusФайл конфигурации Vim
span>.txt " complete+=s makes autocompletion search the thesaurus set complete+=s endfu com! WP call WordProcessor()
Теперь, когда вы видите функцию в целом, мы можем разбить ее на части. Далее просмотрите разделы нашей функции, закоммент
Наш текстовый процессор
отдельные строки выделены серым цветом.1. Движение меняется с map j gj
и map k gk
Здесь вы видите изменение в том, как работает перемещение курсора внутри Vim. Если вы читали предыдущие статьи о Vim, упомянутые в начале этой статьи, вы знаете, что jперемещает курсор вниз, а kперемещает курсор вверх. Аналогично, gjи gkперемещают вас вниз и вверх, но они перемещают курсор по строке на экране, а не по строке в файле.
Наше сопоставление j/kс gj/gkдает курсору возможность перемещаться вверх и вниз по перенесенным линиям на экране. Это помогает, когда вы печатаете длинные абзацы и вам нужно легко переместить курсор в середину этих абзацев.
2. Форматирование текста с помощью команд setlocal
Сначала см. setlocal formatoptions=1
. «Параметры форматирования» позволяют выбирать из нескольких режимов форматирования текста. В случае варианта «1» Vim воздержится от переноса строк после однобуквенного слова. Вместо этого, когда это возможно, он попытается разбить строки перед однобуквенным словом.
Далее, setlocal noexpandtab
позволяет запретить Vim менять табуляцию на пробелы. Например, настройка «expandtab» заставит Vim изменить нажатие клавиши Tab на несколько пробелов одинаковой длины. «Noexpandtab» делает обратное; он сохраняет нажатие клавиши Tab как один символ.
setlocal wrap
сообщает Vim о переносе текста, когда он достигает конца экрана. Именно такого поведения вы ожидае
1. Движение меняется с map j gj
и map k gk
позволяет Vim разрывать строки в разумных местах. Это предотвращает перенос строк на последний символ, который помещается на экране. Частично именно поэтому вы увидите, как строки текста достигают различных точек экрана, прежде чем перевернуться в начало. Посмотрите, как это выглядит с незаконченной копией этой статьи, на скриншоте ниже
3. Орфография и офлайн-тезаурус
Vim имеет встроенную функцию проверки орфографии. Вы можете заставить функцию «WordProcessor» использовать эту возможность с помощью команды setlocal spell spelllang=en_us
. Здесь вы можете определить несколько языков в списке, разделенном запятыми.
Найдите дополнительные языковые файлы на этом FTP-сайте Vim . Поместите выбранные файлы (файлы.spl и.sug для каждого языка) в «$HOME/.vim/spell/». Измените строку функции на set spelllang=en_us,nl,medical
, например, чтобы проверить наличие английских, голландских и медицинских сл
2. Форматирование текста с помощью команд setlocal
нутыми и жирными шрифтами.Вы можете найти замену, введя :z=
в обычном режиме. (Используйте клавишу Escape, чтобы перейти в обычный режим.) Эта команда создаст экран, подобный следующему изображению.
Вы можете использовать функцию тезауруса Vim, указав выбранный вами каталог тезауруса с помощью set thesaurus+=/home/<user>/.vim/thesaurus/mthesaur.txt
или аналогичного. Вы можете найти файл «mthesaur.txt» в Проекте Гутенберг . Поместите загруженный текстовый файл в каталог, который вы определите с помощью этой команды.
Найдите слова, похожие на выделенное слово, перейдя в режим вставки (нажмите iв обычном режиме) и набрав Ctrl+ x, а затем Ctrl+ t. Он покажет вам список, подобный следующему изображению, который вы можете прокручивать, чтобы найти новое слово.
Иногда предложения не самые лучшие.
4. Автодополнение слов с помощью опции «завершить»
Посмотрите set complete+=s
для нашего окончательного рассмотрения. Эта опция предписывает Vim искать в вашем тезаурусе слово, которое вы хотите автозаполнить.
Обычно вы можете автозаполнять слова, заставляя Vim просматривать предыдущие введенные вами слова, например «опечатка» и «ошибка» на следующем снимке экрана. Вы просто входите в режим вставки и набираете Ctrl+ nили Ctrl+ pдля поиска слова, которому соответствует, например, наполовину написанное слово
3. Орфография и офлайн-тезаурус
="https://saintist.ru/wp-content/uploads/2024/05/vim-suggest-c.png" alt="Рекомендации по автозаполнению Vim">Видите, первые два отрывка не из тезауруса? Эти две строки — единственные варианты, которые вы бы здесь увидели, если бы наша функция не использовала «complete+=s». Вы можете опустить или закомментировать эту строку для более быстрого автозаполнения.
Запуск текстового процессора
Последняя строка вашего.vimrc, обеспечивающая работу функции WordProcessor, — это com! WP call WordProcessor()
. Он позволяет вам ввести :WP
в обычном режиме, чтобы настроить возможности обработки текста Vim.
Вы можете отредактировать «WP» в этой строке, чтобы читать все, что захотите – просто убедитесь, что текст непрерывен. Какой бы текст вы ни выбрали, команда изменится на :<your-text>
.
Заключение
Функциональность, которую я здесь обсуждал, действует только в течение одного сеанса Vim. Поэтому, когда вы закроете и снова откроете Vim, настройки по умолчанию снова сохранятся. Это произойдет, даже если вы откроете тот же файл во второй раз.
Вы можете установить эти параметры внефункции, чтобы они работали постоянно, но они могут не соответствовать многим задачам программирования, для которых был создан Vim. В любом случае, набрать пару символов не составит труда. Просто наслаждайтесь новыми настройками и тем фактом, что вы превратили свой терминал в мощный редактор абзацев.