Path: blob/main/documentation/content/ru/books/fdp-primer/editor-config/_index.adoc
18098 views
---
description: 'Конфигурация, используемая в текстовых редакторах в проекте документации FreeBSD'
next: books/fdp-primer/trademarks
params:
path: /books/fdp-primer/editor-config/
prev: books/fdp-primer/writing-style
showBookMenu: 'true'
tags: ["editor", "configuration", "vim", "emacs", "FreeBSD"]
title: 'Глава 13. Настройка редактора'
weight: 13
---
[[editor-config]]
= Настройка редактора
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 13
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/fdp-primer/
ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]
ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
Настройка конфигурации текстового редактора может ускорить и упростить работу с документами, а также помочь им соответствовать рекомендациям FDP.
[[editor-config-vim]]
== Vim
Установите из package:editors/vim[], затем следуйте инструкциям по настройке в разделе crossref:editor-config[editor-config-vim-config,Конфигурация]. Более опытные пользователи могут использовать полноценный линтер, например link:https://github.com/dense-analysis/ale[Ale], который также может работать как клиент link:https://langserver.org/[Language Server Protocol] для Vim.
[[editor-config-vim-use]]
=== Использование
Создатели страниц Справочника могут использовать следующие сочетания клавиш для переформатирования:
* Нажмите kbd:[P], чтобы переформатировать абзацы или выделенный текст в режиме Visual.
* Нажмите kbd:[T], чтобы заменить группы из восьми пробелов на табуляцию.
В документацию добавлен линтер link:https://vale.sh[Vale] для проверки грамматических и стилистических ошибок. Vale поддерживает различные редакторы и IDE.
Vale может быть уже установлен как зависимость мета-порта package:textproc/docproj[]. Если нет, установите package:textproc/vale[] с помощью:
[source, console]
....
$ pkg install vale
....
Установите link:https://github.com/dense-analysis/ale[Ale] для интеграции в package:editors/vim[], чтобы использовать package:textproc/vale[].
[source, console?prompt=%]
....
% mkdir -p ~/.vim/pack/vendor/start
% git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.vim/pack/vendor/start/ale
....
Пользователи, использующие менеджеры плагинов для package:editors/vim[], не нуждаются в вышеописанном и должны следовать инструкциям своего менеджера плагинов для установки link:https://github.com/dense-analysis/ale[Ale].
В данный момент из-за ошибки в link:https://vale.sh[Vale] необходимо скопировать конфигурацию link:https://vale.sh[Vale] в домашний каталог. Учитывая, что репозиторий был склонирован в [.filename]#~/doc#, скопируйте следующим образом:
[source, console?prompt=%]
....
% cp -R ~/doc/.vale* ~/
....
[[editor-config-vim-config]]
=== Конфигурация
Отредактируйте файл [.filename]#~/.vimrc#, добавив следующие строки в конец файла:
[source.programlisting, viml]
.`~/.vimrc`
....
if has("autocmd")
au BufNewFile,BufRead *.adoc call Set_ADOC()
au BufNewFile,BufRead *.[1-9] call Set_MAN()
endif " has(autocmd)
function Set_Highlights()
"match ExtraWhitespace /^\s* \s*\|\s\+$/
return 0
endfunction " Set_Highlights_Adoc()
function Set_Highlights_MAN()
highlight default link OverLength ErrorMsg
match OverLength /\%71v.\+/
return 0
endfunction " Set_Highlights_MAN()
function ShowSpecial()
setlocal list listchars=tab:>>,trail:*,eol:$
hi def link nontext ErrorMsg
return 0
endfunction " ShowSpecial()
function Set_COMMON()
setlocal number
setlocal shiftwidth=2
setlocal tabstop=8
setlocal softtabstop=2
setlocal formatprg="fmt -p"
setlocal autoindent
setlocal smartindent
call ShowSpecial()
call Set_Highlights()
return 0
endfunction " Set_COMMON()
function Set_ADOC()
setlocal syntax=asciidoc
setlocal filetype=asciidoc
call Set_COMMON()
return 0
endfunction " Set_ADOC()
function Set_MAN()
setlocal syntax=man
setlocal filetype=man
setlocal textwidth=70
" Rewrap paragraphs
noremap P gqj
" Replace spaces with tabs
noremap T :s/ /\t/<CR>
call Set_COMMON()
call Set_Highlights_MAN()
return 0
endfunction " Set_Man()
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\}
let g:ale_linters = {
\ 'asciidoc': ['vale'],
\}
let g:ale_fix_on_save = 1
....
[IMPORTANT]
======
Приведённая выше конфигурация автоматически удалит конечную строку, конечные пробелы и множественные пробелы, которые могут отображать дополнительные нежелательные изменения в выводе `git diff`. В таких случаях обязательно укажите это в сообщении коммита.
======
[[editor-config-emacs]]
== Emacs
Установка из package:editors/emacs[] или package:editors/emacs-devel[].
[[editor-config-emacs-igor]]
=== Автоматизированная проверка правописания с Flycheck и Igor
Пакет link:https://www.flycheck.org/[Flycheck] доступен из link:https://melpa.org/[Milkypostman's Emacs Lisp Package Archive] (MELPA). Если MELPA ещё не добавлен в packages-archives Emacs, его можно добавить, выполнив
[source, emacs-lisp]
....
(add-to-list 'package-archives '("melpa" . "http://stable.melpa.org/packages/") t)
....
Добавьте строку в файл инициализации Emacs (один из [.filename]#~/.emacs#, [.filename]#~/.emacs.el# или [.filename]#~/.emacs.d/init.el#), чтобы сделать это изменение постоянным.
Для установки Flycheck выполните
[source, emacs-lisp]
....
(package-install 'flycheck)
....
Создайте проверяющий модуль Flycheck для package:textproc/igor[] с помощью выполнения
[source, emacs-lisp]
....
(flycheck-define-checker igor
"FreeBSD Documentation Project sanity checker.
See URLs https://www.freebsd.org/docproj/ and
http://www.freshports.org/textproc/igor/."
:command ("igor" "-X" source-inplace)
:error-parser flycheck-parse-checkstyle
:modes (nxml-mode)
:standard-input t)
(add-to-list 'flycheck-checkers 'igor 'append)
....
Еще раз, добавьте эти строки в файл инициализации Emacs, чтобы изменения стали постоянными.
[[editor-config-emacs-specifc]]
=== Специфичные настройки документации FreeBSD
Чтобы применить настройки, специфичные для проекта документации FreeBSD, создайте файл [.filename]#.dir-locals.el# в корневом каталоге репозитория документации и добавьте в него следующие строки:
[source, emacs-lisp]
....
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((nxml-mode
(eval . (turn-on-auto-fill))
(fill-column . 70)
(eval . (require 'flycheck))
(eval . (flycheck-mode 1))
(flycheck-checker . igor)
(eval . (add-to-list 'rng-schema-locating-files "~/.emacs.d/schema/schemas.xml"))))
....
[[editor-config-nano]]
== nano
Установка из package:editors/nano[].
[[editor-config-nano-config]]
=== Конфигурация
В текущей версии nano нет файла подсветки синтаксиса для adoc/asciidoc. Поэтому создадим его с нуля, используя текстовый редактор для создания нового файла или добавления строк в [.filename]#~/.nanorc# со следующим содержимым:
[source]
.`~/.nanorc`
....
syntax "asciidoc" "\.(adoc|asc|asciidoc)$"
# main header
color red "^====+$"
# h1
color red "^==[[:space:]].*$"
color red "^----+$"
# h2
color magenta "^===[[:space:]].*$"
color magenta "^~~~~+$"
# h4
color green "^====[[:space:]].*$"
color green "^\^\^\^\^+$"
# h5
color brightblue "^=====[[:space:]].*$"
color brightblue "^\+\+\+\++$"
# attributes
color brightgreen ":.*:"
color brightred "\{[a-z0-9]*\}"
color red "\\\{[a-z0-9]*\}"
color red "\+\+\+\{[a-z0-9]*\}\+\+\+"
# Paragraph Title
color yellow "^\..*$"
# source
color magenta "^\[(source,.+|NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]"
# Other markup
color yellow ".*[[:space:]]\+$"
color yellow "_[^_]+_"
color yellow "\*[^\*]+\*"
color yellow "\+[^\+]+\+"
color yellow "`[^`]+`"
color yellow "\^[^\^]+\^"
color yellow "~[^~]+~"
color yellow "'[^']+'"
color cyan "`{1,2}[^']+'{1,2}"
# bullets
color brightmagenta "^[[:space:]]*[\*\.-]{1,5}[[:space:]]"
# anchors
color brightwhite "\[\[.*\]\]"
color brightwhite "<<.*>>"
# trailing whitespace
color ,blue "[[:space:]]+$"
# multiples of eight spaces at the start a line
# (after zero or more tabs) should be a tab
color ,blue "^([TAB]*[ ]{8})+"
# tabs after spaces
color ,yellow "( )+TAB"
# highlight indents that have an odd number of spaces
color ,red "^(([ ]{2})+|(TAB+))*[ ]{1}[^ ]{1}"
....
Обработать файл для создания встроенных табуляций:
[source, console?prompt=%]
....
% perl -i'' -pe 's/TAB/\t/g' ~/.nanorc
....
[[editor-config-nano-use]]
=== Использование
Укажите дополнительные полезные опции при запуске редактора:
[source, console?prompt=%]
....
% nano -AKipwz -T8 _index.adoc
....
Пользователи man:csh[1] могут определить алиас в [.filename]#~/.cshrc#, чтобы автоматизировать эти параметры:
[source, shell]
....
alias nano "nano -AKipwz -r 70 -T8"
....
После определения псевдонима параметры будут добавлены автоматически:
[source, console?prompt=%]
....
% nano _index.adoc
....