Запретить ввод более одного пробела в VSCode, за исключением начала строки - PullRequest
0 голосов
/ 19 июня 2020

Я хочу ограничить ввод более одного пробела в VS Code, если только он не находится перед первым непробелом в строке.

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

Ответы [ 2 ]

1 голос
/ 28 июня 2020

Вы действительно ищете средство форматирования для этих двух функций: форматирование по типу и форматирование при сохранении. Однако вы можете получить первую функцию - «ограничить ввод более одного пробела в коде Visual Studio, если только он не находится перед первым непробелом в строке» с помощью расширения HyperSnips .

Для настройки этого расширения см. { ссылка }

Затем, скажем, в вашем all.hsnips файле поместите это:

snippet `(\S)( ){2,}` "found 2 consecutive spaces with no non-whitespace characters preceding" A
``rv = m[1] + " "``
endsnippet

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

Запустите команду HyperSnips: Reload Snippets.

В основном вы используете фрагмент, который использует (\S)( ){2,} как префикс. Он будет срабатывать всякий раз, когда он обнаруживает два или более пробелов в строке и заменяет их только одним!

Фрагмент будет срабатывать только в том случае, если этим двум пробелам предшествует непробельный символ (так что некоторый символ) и, следовательно, ваше второе требование, чтобы перед первым символом в строке было разрешено несколько пробелов.

Это также работает между существующими словами , если вы go там редактируете - вы не сможете чтобы добавить пространство к существующему!

Демо:

space restrict demo

The gif doesn't really capture it well but every time I am trying to write a second consecutive space it deletes it leaving only the one.


Your second question was "if you open a file that was like that already I want those multispaces to be removed when saved".

I suggest running a script on save. Using, for example, Запуск при сохранении задачи . В ваших настройках:

"triggerTaskOnSave.tasks": {

  "stripSpaces": [
    "**/*.txt"   // here restricting it to .txt files
  ],
},

Это запускает задачу stripSpaces, когда вы сохраняете файл .txt. Эта задача (в задачах. json) может выглядеть так:

{
  "label": "stripSpaces",
  "type": "shell",
  "command": "awk -f stripSpaces.awk ${relativeFile} > temp; mv temp ${relativeFile}"
}

, который запускает этот stripSpaces.awk скрипт:

# strip multiple consecutive spaces from a file
# unless they are the beginning of the line

BEGIN   {
    regex="\\S( ){2,}";
    }
{

if (match($0,regex))    {

    gsub(/( ){2,}/, " ")
    print
}
else print
}

Демо:

пробелы в awk при сохранении демо

1 голос
/ 26 июня 2020

Вот Конечные пробелы - похоже, это обходной путь для того, что вы ищете.

...