Проблема в том, что вы добавляете строку, а не число. Оператор +
в JavaScript имеет множественную семантику, и как только один операнд является строкой, он будет выполнять конкатенацию строк.
Чтобы предотвратить это, преобразуйте строку в число с унарным +
оператор.
Похоже, что Вы кодируете в Perl. Удостоверьтесь, что следующее установлено в Вашем .vimrc:
filetype plugin indent on
syntax enable
Они скажут Vim устанавливать тип файла при открытии буфера и настраивать добавление отступа и подсветку синтаксиса. Никакая потребность явно установить smartindent начиная с включенного файла синтаксиса Perl Vim не установит его (и никакие другие определенные для Perl настройки) автоматически.
<час> Примечание: наличие любого set smartindent
и/или set autoindent
в ~/.vimrc
может препятствовать решению работать. Если Вы имеете проблемы, ищете их.
Я думаю, что "smartindent" разработан для C, таким образом, это думает, что "#" является запуском директивы препроцессору вместо комментария. Я не знаю решения для него, кроме того, если Вы введете пространство, затем клавиша Backspace, тогда "#", то это не сделает этого.
Эта проблема может быть решена путем помещения следующего в _vimrc файле.
set cindent
set cinkeys=0{,0},!^F,o,O,e " default is: 0{,0},0),:,0#,!^F,o,O,e
[еще 111] информация ...
Если вы используете Параметр отступа "smartindent", решение вашей проблемы объясняется в документации VIM ": help smartindent":
При вводе '#' в качестве первого символа в новой строке отступ для этой строки удаляется, в первом столбце ставится '#'. Отступ восстанавливается для следующей строки. Если вы этого не хотите, используйте это сопоставление : ": inoremap # X ^ H #", где ^ H вводится с помощью CTRL-V CTRL-H. При использовании "> > ", строки, начинающиеся с '#', не сдвигаются вправо.
Я использую" smartindent "и могу подтвердить, что описанное исправление работает для меня. Он обманывает VIM, заменяя нажатие клавиши "#" на ввод "X", затем нажимая клавишу Backspace, а затем снова вводя "#". Вы можете попробовать это вручную и убедиться, что при этом не запускается автоматическое вытеснение.