Jak mogę sprawić, by polecenia `J` i` gq` Vima używały jednej spacji po kropce?

101

Kiedy używam Jpolecenia Vima , większość linii jest łączona pojedynczą spacją do wypełnienia. Ale po pewnym okresie Vim zawsze używa dwóch spacji. Weźmy następujący przykład:

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

Dla mnie wynik to:

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

Jedna spacja po przecinku, dwie po kropce. Ta sama historia, jeśli ponownie sformatujesz akapit za pomocą gqpolecenia.

Czy istnieje ustawienie, które mogę zmodyfikować, aby Vim używał tylko jednej spacji po kropce?

nelstrom
źródło
1
Czy ktoś rozumie uzasadnienie tego domyślnego?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
3
@CiroSantilli en.wikipedia.org/wiki/Sentence_spacing
Denilson Sá Maia
5
@ DenilsonSá: tldr; umieszczanie dwóch spacji między zdaniami było kiedyś uważane za najlepszą praktykę i przez niektórych nadal jest.
Flimm

Odpowiedzi:

106
: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.

Więc zrobiłbyś

:set nojoinspaces

aby uzyskać to, czego pragniesz.

Alternatywnie możesz przełączyć ustawienie za pomocą

:set joinspaces!
René Nyffenegger
źródło
26

Musisz :set nojoinspacespozbyć się podwójnej spacji. Dokumentacja tutaj

Kevin Lacquement
źródło
3
Lub w .vimrc: pomiń początkowy dwukropek:set nojoinspaces
Luc
10
:h 'joinspaces'

Ustaw tę opcję na 0 / false / no.

Luc Hermitte
źródło