Синтаксическая проверка NASM

Итак, я немного поработал на уроке ассемблера в колледже и использую Vim в качестве основного редактора кода. У меня проблема с Syntastic, когда я пишу сборку для NASM, но Syntastic хочет только запустить средство проверки ошибок gcc (которое говорит мне, что весь мой код неверен). Я попытался запустить средство проверки NASM явно с помощью SyntasticCheck nasm, но это, похоже, не сработало. Я также попытался let g:syntastic_asm_checkers = ['nasm'] в моем .vimrc, но это, похоже, ничего не дало. Как я могу заставить Syntastic запустить здесь средство проверки NASM?

В качестве примечания, я проверил это, просто написав что-то вроде mov eax,, чтобы получить ошибку из NASM.


person emanguy    schedule 25.09.2015    source источник
comment
:set ft? что это показывает?   -  person Jason Hu    schedule 25.09.2015
comment
Вы смотрели список средств проверки? nasm является средством проверки для типа файла nasm, а не asm.   -  person Sato Katsura    schedule 25.09.2015
comment
@HuStmpHrrr: Vim показывает, что он не определял тип файла, когда я вводил вашу команду. Я провел дополнительное исследование и, по-видимому, это известная проблема, заключающаяся в том, что Vim не определяет тип файла .nasm, как подробно описано здесь. Все снова заработало после того, как я set filetype=nasm. Спасибо! @SatoKatsura: Вы были правы, nasm - это средство проверки nasm типа файла. По какой-то причине я был под впечатлением, что я все еще могу запустить его в любом случае. Мне нужно больше узнать о том, как заставить vim распознавать тип файла nasm...   -  person emanguy    schedule 25.09.2015


Ответы (4)


Вам нужно либо

  • принудительно связать .asm с nasm. Просто добавьте это в любом месте вашего .vimrc

    autocmd BufNewFile,BufRead *.asm set filetype=nasm
    
  • используйте расширение .nasm. Тогда все просто будет работать.

person Jack Evans    schedule 25.04.2017
comment
Не могли бы вы изменить объяснение того, почему этот код отвечает на вопрос? Ответы, содержащие только код, не рекомендуются, поскольку они не учат решению. - person Nathan Tuggy; 25.04.2017

Я отредактировал файл nasm.vim в ~/.vim/bundle/syntastic/syntax_checkers/nasm для работы с asm и сохранил отредактированный файл в ~/.vim/bundle/syntastic/syntax_checkers/asm под тем же именем nasm.vim. Таким образом, вы можете поместить let g:syntastic_asm_checkers = ['nasm'] в свою конфигурацию .vimrc, и она отлично работает :)

Вы можете найти отредактированный файл, а также некоторые подробности на https://srv2.mysnet.me/casm/tutorial/vim-configuration.

Ну, я знаю, что этому вопросу уже несколько лет, но, надеюсь, он поможет другим на востоке. (по крайней мере, я сам искал ответ, пока не понял, что настройка файлов может сработать благодаря @netskink: D)

person christopher westburry    schedule 01.08.2018

Как упоминалось в комментариях выше, оказывается, что nasm работает только для файлов с расширением nasm. После переименования моего файла в <file>.nasm я обнаружил, что vim не определяет автоматически тип файла nasm после запуска set ft?, поэтому мне придется изменить свой .vimrc для поддержки расширения.

person emanguy    schedule 25.09.2015
comment
вы можете ввести :autocmd BufRead и :autocmd BufEnter и найти раздел filetypedetect, чтобы проверить, распознает ли ваша реализация vim расширение файла или это настоящая ошибка. - person Jason Hu; 25.09.2015

Что бы это ни стоило, я попытался поработать с файлами:

plugins/syntastic/registry.vim
syntax_checkers/nasm/nasm.vim
syntax_checkers/asm/gcc.vim

Чтобы отключить синтаксис .asm и заменить его синтаксисом nasm, но это не сработало. Я мог избавиться от ошибок, но я не мог заставить раскраску snytax или средство проверки работать автоматически. Я отменил свои изменения и просто сделал это:

:SyntasticCheck nasm
:set filetype=nasm
:SyntasticCheck nasm

После второй команды syntasticcheck у него будет включена окраска синтаксиса и проверка синтаксиса nasm. Не уверен, почему это занимает два прохода.

person netskink    schedule 22.02.2016