2

Мои файлы .vimrc, кажется, работают и не генерируют видимых ошибок при нормальной работе. Недавно я начал использовать Knife и обнаружил, что не могу использовать Vim в качестве редактора для редактирования содержимого Chef, потому что что-то вызывает его выход из-за плохого кода. Удаление файла .vimrc сделало Ножа счастливым, поэтому я предполагаю, что что-то в моем .vimrc плохое.

Есть ли какие-либо команды или инструменты, которые я могу использовать, чтобы проверить сам .vimrc на наличие ошибок?

Это vimrc в вопросе:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle, required
Bundle 'gmarik/vundle'
Bundle 'scrooloose/syntastic'
Bundle 'scrooloose/nerdtree'
Bundle 'michalbachowski/vim-wombat256mod'
Bundle 'spf13/vim-autoclose'
Bundle 'leshill/vim-json'
Bundle 'pangloss/vim-javascript'
Bundle 'hail2u/vim-css3-syntax'
Bundle 'tpope/vim-markdown'
Bundle 'beyondwords/vim-twig'
Bundle 'spf13/PIV'
Bundle 'othree/html5-syntax.vim'
Bundle 'vim-scripts/HTML-AutoCloseTag'
Bundle 'vim-scripts/indenthtml.vim'
Bundle 'Lokaltog/powerline'
" Keep bundle commands between here and filetype plugin indent on.



filetype plugin indent on     " required

" Brief help
" :BundleList          - list configured bundles
" :BundleInstall(!)    - install (update) bundles
" :BundleSearch(!) foo - search (or refresh cache first) for foo
" :BundleClean(!)      - confirm (or auto-approve) removal of unused bundles
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle commands are not allowed.

" NERDTree config
map <C-n> :NERDTreeToggle<CR>
autocmd vimenter * if !argc() | NERDTree | endif

" enable paste mode
nnoremap <F2> :set invpaste paste?<CR>
set pastetoggle=<F2>
set showmode

" Set PHP debugger port to 9001
let g:debuggerPort = 9001

set t_Co=256
colorscheme wombat256mod
:syntax enable

python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup
set rtp+=/Users/shane/.vim/bundle/powerline/powerline/bindings/vim

set number              " Enables line numbers
set cindent             " autoindent
set tabstop=4           " set tab distance
set shiftwidth=4
set expandtab           " force tabs into spaces
set ruler

let g:html_indent_script1 = "inc"
let g:html_indent_style1 = "inc"

autocmd BufNewFile,BufRead Gemfile set filetype=ruby
autocmd BufNewFile,BufRead Vagrantfile set filetype=ruby

2 ответа2

1

Ты не можешь. Как и большинство (все?) В интерпретируемых языках единственное, что можно сделать, - это проверить синтаксическую достоверность, но имеют ли смысл вообще вызовы функций и т. д., которые вы записали, и показывает только когда конкретный путь к коду действительно достигнут.

Единственное, что вы можете сделать, это сузить проблему, изучив, что такое «плохой код» и что он пытается вам сказать. Например, вы можете попытаться отладить проблему, комментируя все вещи, в которых вы не уверены, что они не вызывают вашу проблему, попробуйте, работает ли Knife с этой конфигурацией, и итеративно включите предыдущий закомментированный код, пока не получите ошибку снова.

0

Вы уверены, что это код выхода vim, а не статус редактируемого файла? Под :help 'backupcopy' есть параграф о том, как использовать vim для редактирования вашего файла crontab. Вы можете попасть туда напрямую (но потерять контекст) с :help crontab:

                 *crontab*
One situation where "no" and "auto" will cause problems: A program
that opens a file, invokes Vim to edit that file, and then tests if
the open file was changed (through the file descriptor) will check the
backup file instead of the newly created file.  "crontab -e" is an
example.

Если это может быть тем, что происходит с Knife, попробуйте добавить :set bkc=yes в ваш файл vimrc. Вы можете сэкономить много времени на тестировании, так как независимо от того, сколько вы закомментируете в файле vimrc, vim сбросит опцию 'compatible' как только найдет файл vimrc, и это установит для 'backupcopy' значение "auto". , У меня есть следующее в моем файле vimrc:

" When vim is called from "crontab -e" we need to set this option specially:
au BufEnter /private/tmp/crontab.* setl backupcopy=yes

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .