Во многих сценариях, которые я пишу, я часто строю программы в «функциональном стиле». То есть вначале я определяю множество функций, а потом применяю их. Это приводит к последовательности вызовов вложенных функций, при этом я печатаю:
... и т. д.
Для случаев, когда функции «соединены» вместе, вывод одной функции является аргументом (обычно первым, но не всегда) следующей функции, вывод которой является аргументом следующей функции, и до бесконечности. В префиксной нотации движения клавиш могут быть очень скачкообразными, если вы набираете эту последовательность слева направо. Например, как бы вы напечатали вторую строку следующего примера [Python] (~ mul ~ - умножение, ~ truediv ~ - деление)?
from operator import add, mul, truediv
print(truediv(mul(add(1,1),2),4))
Если бы мне пришлось написать тот же набор операций линейно (слева направо) пишите, не прыгая), я скорее буду использовать обозначения композиции функций. Основываясь на моем предыдущем примере на Python, Я мог бы написать
from functional import foldr, compose, partial, flip
print(foldr(compose,add,(partial(mul,2),partial(flip(truediv),4)))(1,1))
. Я думаю, это потому, что я связываю каждую функцию с ее собственными аргументами и предпочитаю вводить их последовательно, а не заполнять аргументы другой функции до того, как список аргументов для первой функции будет завершен (как было бы необходимо набрать первый пример слева направо).
Я заметил это, потому что долгое время был пользователем emacs и только недавно попробовал viper / vimpuse и vim. В emacs я мог бы сделать что-нибудь вроде
Я долгое время пользовался emacs и только недавно попробовал viper / vimpuse и vim. В emacs я мог бы сделать что-нибудь вроде Я долгое время пользовался emacs и только недавно попробовал viper / vimpuse и vim. В emacs я мог бы сделать что-нибудь вроде... и так далее, с периодическим использованием Mb, Mf, M-DEL (backward-word, forward-word, backward-kill-word), если я напортачил или забыть что-то.
Недавно я узнал о Co в vim, которая спасает жизнь - но я обнаружил, что эквивалентными ключами будут
... и остальное; эквивалентами обратного слова, прямого слова и обратного уничтожающего слова были бы Co b, Co w и Cw.
Это заставило меня подумать, что для программирования в vim мне, возможно, придется увеличить объем рабочей памяти, чтобы я мог приостанавливать создание одной функции при заполнении другой, и так далее по стеку. Кроме того, при создании текстовых документов я обнаружил, что довольно часто редактирую (уничтожаю, копирую, восстанавливаю) даже до того, как закончу полную мысль, что не очень подходит для стиля работы vim «оставаться в нормальном режиме, всплеск текста при вставке -mode и обратно в нормальный режим », который, кажется, предполагает, что я способен создать что-то стоящее редактирования во время моих набегов на режим вставки. Чтобы использовать vim, я обнаружил, что во время набора текста я уделяю больше внимания сокращению частоты переключения между режимами. Günter