Так часто, при редактировании с помощью 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: форматирование по ширине, полезное и применимое к рассмотренному выше случаю, не является предметом этого вопроса. Я больше беспокоюсь об удалении пробелов, который не останавливается в конце строки, но вместо этого переносится на первый не-пробельный символ следующей строки.
Вы просто хотите переформатировать этот комментарий, чтобы соответствовать текущей 'textwidth'
. Если комментарий является абзацем (т. Е. Разделен линией пробелов выше и ниже), вы можете просто использовать gqip
( gq
- команда форматирования, ip
- текстовый объект «внутренний абзац»), чтобы переформатировать его. Если это не отдельный параграф, вы можете визуально выбрать эти строки, а затем использовать gq
.
Вероятно, это также зависит от правильности установки 'formatoptions'
, чтобы убедиться, что символы комментариев обработаны правильно, но во многих случаях ftplugin уже это сделал.
Эта команда работает:
:.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, которая редактирует комментарии, как вам нравится, затем поместите их в путь и используйте команду внешнего фильтра :!
для обработки блоков текста через это.