Необходимо определить то, под чем Вы подразумеваете "лучше всего" - некоторым, скорость - все, что имеет значение и квалифицировало бы ответ как "лучше всего" - для других, они могли бы простить несколько сотен миллисекунд, если бы решение было более читаемым.
"Лучший" субъективно, если Вы не более конкретны.
<час>, Который сказал:
Выполняют итерации через числа, поскольку каждое число ищет список то число и когда Вы достигаете числа, которое возвращает только 1 для количества результатов поиска, Вы сделаны.
И вот почему каждый раз, когда вы пишете функцию с побочным эффектом, Бог убивает котенка!
: 'a, .ya a
скопирует блок в буфер a или :' a, .ya A
добавит блок к текущему содержимому буфера a Правка: Подстановка в блок текста:
: 'a, .s / search_string / replace_string / [gc]
, который будет заменен в вашем текстовом блоке. Добавление 'g' или 'c' после последней косой черты вызовет обычные глобальные и подтверждающие функции. Изменить: Забыл сказать, помните, что 'a
(апостроф a) относится к строка, содержащая маркер и ʻa
(обратный апостроф a) относится к символу в строке, которую вы отметили.
Итак ʻad`b
(bactic-ad-backtic-b) - это небольшой полезный фрагмент для удаления текста в строке от символа, отмеченного 'a', до символа перед символ, помеченный буквой B.
Кстати, в Vim ввод : reg
даст вам содержимое всех ваших регистров, включая ваши регистры удаления.
Я использую их, когда мне нужно прыгать в большом файле. Например, если я работаю над двумя взаимосвязанными функциями, одна из которых определена в верхней части файла, а другая - в нижней части, я могу установить маркеры для быстрого перехода между этими двумя местоположениями.
Если я объявляю класс или работаю с объявлением, с которым я не знаком, часто бывает полезно отметить место, где все объясняется впервые, чтобы я мог вернуться к быстрой справке.
Маркеры полезны в целом , но я не думаю, что они более (или менее) полезны только потому, что вы разрабатываете на C ++.
Это лишь некоторые идеи - я уверен, что там будет много других хороших.
Чаще всего используется для копирования-вставки или удаления больших блоков.
Перейдите к первой строке блока, введите mx
Перейдите к последней строке блока, введите y'x
, чтобы скопировать весь блок (в буфер обмена), или d'x
, чтобы удалить (вырезать) его. В любом случае, p
или P
можно использовать для вставки в другое место.
Маркеры служат хорошим способом вернуться к началу строки или точному месту в строке.
Обычно я использую их, когда хочу извлечь или скопировать часть кода. Рассмотрим следующее:
int tmp = 0;
while (tmp < 10)
{
doIt(tmp); /* cursor before d */
/* ... */
finishIt(tmp);
tmp++
}
Если я хочу извлечь из doIt (tmp)
до finishIt (tmp)
, я бы установил маркер на курсоре ( ma
например), перейдите к finishIt, а затем удалите, чтобы отметить a с помощью d'a
.