Как я могу заставить команды Vim `J` и` gq` использовать один пробел после точки?

102

Когда я использую Jкоманду Vim , большинство строк объединяются одним пробелом для заполнения. Но после определенного периода Vim всегда использует два пробела. Возьмем следующий пример:

This ends with a comma,
but this ends with a period.
Join with 'J' and what do you get?

Для меня результат:

This ends with a comma, but this ends with a period.  Join with 'J' and what do you get?

Один пробел после запятой, два после точки. Та же история, если вы переформатируете абзац с помощью gqкоманды.

Есть ли параметр, который я могу изменить, чтобы Vim использовал только один пробел после точки?

Nelstrom
источник
1
Кто-нибудь понимает причину этого дефолта?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
3
@CiroSantilli en.wikipedia.org/wiki/Sentence_spacing
Денилсон Са Майя
5
@ DenilsonSá: tldr; вставка двух пробелов между предложениями раньше считалась лучшей практикой, и некоторые люди до сих пор так считают.
Flimm

Ответы:

107
:help joinspaces


'joinspaces' 'js'    boolean    (default on)
            global
            {not in Vi}
    Insert two spaces after a '.', '?' and '!' with a join command.
    When 'cpoptions' includes the 'j' flag, only do this after a '.'.
    Otherwise only one space is inserted.
    NOTE: This option is set when 'compatible' is set.

Итак, вы бы сделали

:set nojoinspaces

получить желаемое.

Кроме того, вы можете переключить настройку с помощью

:set joinspaces!
Рене Ниффенеггер
источник
10
:h 'joinspaces'

Установите для этого параметра значение 0 / false / no.

Люк Эрмитт
источник