de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
A. Wilson
A. Wilson
Вопрос

Удаление различных пробелов при редактировании в Vim

Так часто, при редактировании с помощью Vim, я попаду в различные ситуации, когда пробелы дают мне хлопот. Например, скажем, у меня есть такой комментарий:

#This program was featured on the Today show, it is an algorithm for promoting world peace in third-world countries
#given the name of that country and the name of a celebrity to endorse its cause

Если я хочу, например, обрезать строки, чтобы они переходили к символам X, я в конечном итоге помещаю новую строку где-то посредине верхней строки, чтобы получить это (после попадания в новую строку и авто-отступы):

#This program was featured on the Today show, it is an algorithm for promoting
world peace in third-world countries
#given the name of that country and the name of a celebrity to endorse its cause

Затем я добавляю # в начало строки, и все хорошо и хорошо, но потом я хочу, чтобы эта линия тоже выстраивалась в линию. Для этого мне нужно удалить новую строку, все пробелы для отступа на следующей строке, а затем комментарий # mark. Для этого не требуется очень много времени, но эта и подобные ситуации складываются в течение дня, когда нужно кодировать.

Теперь приведенный выше пример довольно конкретный, но мой вопрос - нет. Что хорошего в Vim, чтобы удалить все пробелы, ВКЛЮЧАЯ NEWLINES, до следующего символа без пробелов? Если у Vim уже есть движения, которые делают это, это было бы потрясающе, но если нет, есть ли у кого-нибудь любимая функция Vim, которую они используют, чтобы сделать выше, которая может быть сопоставлена ​​с ключом? По крайней мере, я пропустил некоторые идиомы использования Vim, которые мешают мне даже беспокоиться об этом случае?

EDIT: форматирование по ширине, полезное и применимое к рассмотренному выше случаю, не является предметом этого вопроса. Я больше беспокоюсь об удалении пробелов, который не останавливается в конце строки, но вместо этого переносится на первый не-пробельный символ следующей строки.

0 2011-10-27T19:57:00+00:00 3
A. Wilson
A. Wilson
Редактировал вопрос 28-го октября 2011 в 1:56
Программирование
vim
whitespace
newline
jamessan
27-го октября 2011 в 8:14
2011-10-27T20:14:25+00:00
Дополнительно
Источник
Редактировать
#56792166

Вы просто хотите переформатировать этот комментарий, чтобы соответствовать текущей 'textwidth' . Если комментарий является абзацем (т. Е. Разделен линией пробелов выше и ниже), вы можете просто использовать gqip ( gq - команда форматирования, ip - текстовый объект «внутренний абзац»), чтобы переформатировать его. Если это не отдельный параграф, вы можете визуально выбрать эти строки, а затем использовать gq .

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

1
0
A. Wilson
14-го декабря 2011 в 7:41
2011-12-14T19:41:43+00:00
Дополнительно
Источник
Редактировать
#56792167

Некоторое время спустя, но я обнаружил, что есть команда, которая делает то, что мне нужно, в 90% случаев:

J --  join line below to the current one
1
0
ldog
27-го октября 2011 в 8:10
2011-10-27T20:10:15+00:00
Дополнительно
Источник
Редактировать
#56792165

Эта команда работает:

:.s/\W*$\n\W*//g

он использует замену для удаления пробелов до конца строки и новой строки в конце.

В этом примере:

testting                 aad        $            
asdjkasdjsdaksddjk$

(чтобы увидеть метасимволы в vim, воспользуйтесь командой : set list ).

если вы поместите курсор в первую строку и используете первую команду, он удалит все из aad в $ (не включая aad, но включая $ и новую строку).

Кроме того, обратите внимание на то, что вы делаете, гораздо эффективнее использовать внешнюю программу для форматирования комментариев для вас. В частности, par - это небольшая небольшая программа на языке C, которая редактирует текст и переносит его на желаемые длины.

Если у вас есть par в вашем пути, делать то, что вы пытаетесь сделать, так же просто, как выбрать блок комментария с помощью Shift + v и запустить команду

:!par 40pgr

где 40 - требуемая ширина в столбцах.

Если вы чувствуете себя хакерским, напишите свою собственную программу в C/perl/C ++/python, которая редактирует комментарии, как вам нравится, затем поместите их в путь и используйте команду внешнего фильтра :! для обработки блоков текста через это.

0
0
Похожие сообщества 2
pro.vim
pro.vim
794 пользователей
Содружество пользователей Vim Родственные чаты → @proDOT Дополнительно → @vimersflood
Открыть telegram
pro.vim.flood
pro.vim.flood
37 пользователей
Флудилка чата @vimers
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 4 дня назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией