Оболочка json.tool вернула 1, и я потерял буфер vim - PullRequest
0 голосов
/ 27 августа 2018

Так что я с радостью "взламываю" командную строку, используя vim. Я работаю над текстом JSON, удаляю объекты, обрезаю ответ API, чтобы изолировать фрагмент для более тесной работы.

В какой-то момент я очень рад, что вырубил весь мусор из JSON, и у меня есть только то, что мне нужно, чтобы продолжать работать ...

Итак, я ввожу :%!python -m json.tool и boom.

Так что мой текст JSON не был действительным текстом JSON после того, как я с ним ткнулся, похоже, я где-то забыл запятую.

:%!python -m json.tool
shell returned 1
Press ENTER or type command to continue

Итак, я нажимаю клавишу ввода или любую другую клавишу, а затем мой буфер заменяется красивым сообщением об ошибке ...

Expecting , delimiter: line 3 column 5 (char 20)

О, я забыл запятую в строке 3, спасибо!

Да, но куда пропал мой текст в формате JSON? И с этими леди и джентльменами я обращаюсь за помощью. Это обычно, где я :q! и снова открываю файл JSON и пытаюсь сделать это правильно на этот раз. Но, безусловно, я должен быть в состоянии восстановить свой буфер только из-за того, что у меня хватило смелости попробовать использовать инструмент python json для форматирования большого количества текста, отличного от JSON!

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Если вам нравится отменить то вы полюбите это. Предыдущая команда. Введите :ea, а затем количество секунд, которое вы хотите вернуться назад во времени, и нажмите Enter. Противоположностью этому является более поздняя команда, :lat.

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

Команды Vim 'ранее' и 'позже' не работают должным образом

0 голосов
/ 28 августа 2018

Вы можете установить 'makeprg' и 'errorformat', чтобы вы могли просто запустить :make, чтобы сделать linting .

autocmd FileType json setlocal makeprg=python\ -mjson.tool\ 2>&1\ %\ >\ /dev/null
                     \| setlocal errorformat=%m:\ line\ %l\ column\ %c\ %.%#

Однако, если вы похожи на меня, а ваши json-буферы обычно являются чистыми буферами, используйте setqflist() для заполнения списка быстрых исправлений.

call setqflist([], ' ', {'efm':'%m: line %l column %c %.%#', 'lines': systemlist('python -mjson.tool', getline(1, '$'))})

Для получения дополнительной помощи см .:

:h 'makeprg'
:h 'errorformat'
:h setqflist()
:h systemlist()
0 голосов
/ 27 августа 2018

Похоже, все, что мне нужно сделать, это набрать u, чтобы "отменить", когда у меня появляется это сообщение об ошибке. Vim потрясающий !!!

...