Это потому, что vim находится в командном режиме, когда вы его запускаете. Перед тем как вставить код, вам нужно перейти в режим вставки, например, нажав клавишу i.
В вашем примере вы вставляете свой код в виде команд vim, и когда он доходит до первого a
в $cryptData
, то переходит в режим вставки после текущего символа.
Если вы начинаете работать с vim: http://vim.wikia.com/wiki/Tutorial
! $
- это слово-указатель раскрытия истории, оно расширяется до последнего слова предыдущей команды в истории . IOW, последнее слово предыдущей записи в истории. Это слово обычно является последним аргументом команды, но не в случае перенаправления. В:
echo "hello" > /tmp/a.txt
вся команда 'echo "hello"> /tmp/a.txt'
появилась в истории, и /tmp/a.txt
является последним словом этого команда.
_
- параметр оболочки, он расширяется до последнего аргумента предыдущей команды. Здесь перенаправление не является частью аргументов, передаваемых команде, поэтому только hello
является аргументом, переданным в echo
. Вот почему $ _
расширился до hello
.
_
больше не является одним из стандартных специальных параметров оболочки . Он работает в bash
, zsh
, mksh
и dash
только в интерактивном режиме, ksh93
только когда две команды на отдельных строках:
$ echo 1 && echo $_
1
/usr/bin/ksh
$ echo 1
1
$ echo $_
1