Neovim:如何修复 HTML 中 JavaScript 的缩进?

Neovim: How do I fix indentation for JavaScript inside HTML?

我想使用 <script></script> 在 HTML 文件中编写一些 JavaScript 代码,但是在使用 o 插入新行时出现错误的缩进。

这是我想要的:

  <script type="text/javascript">
    function sumNumbers(num1, num2) {
      return num1 + num2;
    }                                                                                             
  </script>

这是我得到的:

  <script type="text/javascript">
    function sumNumbers(num1, num2) {
          return num1 + num2;
        }                                                                                             
  </script>

可能启用了两种不同的缩进选项。 我正在使用 sheerun/vim-polyglot,我认为它是唯一一个进行缩进的插件。

我正在使用 Neovim。这是我的 init.vim:

call plug#begin('~/.local/share/nvim/plugged')
Plug 'sheerun/vim-polyglot'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'morhetz/gruvbox'
Plug 'dracula/vim'
Plug 'scrooloose/nerdtree'
Plug 'ryanoasis/vim-devicons'
Plug 'maximbaz/lightline-ale'
Plug 'itchyny/lightline.vim'
Plug 'yggdroot/indentline'
Plug 'mattn/emmet-vim'
Plug 'AndrewRadev/tagalong.vim'
call plug#end()

set encoding=UTF-8
set number
set scrolloff=8
set timeoutlen=300
filetype plugin on

syntax enable

colorscheme dracula
highlight Normal ctermbg=233
set cursorline
highlight CursorLine ctermbg=235

set hlsearch
set incsearch
set ignorecase
set smartcase

let g:indentLine_char = '|'

let g:NERDTreeShowHidden = 1
let g:NERDTreeMinimalUI = 1
let g:NERDTreeIgnore = []
let g:NERDTreeStatusline = ''
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
nnoremap <silent> <C-n> :NERDTreeToggle<CR>

let g:user_emmet_leader_key=','
let g:user_emmet_install_global=0
autocmd FileType html,css EmmetInstall

tnoremap <Esc> <C-\><C-n>
tnoremap <A-[> <Esc>

tnoremap <A-h> <C-\><C-n><C-w>h
tnoremap <A-j> <C-\><C-n><C-w>j
tnoremap <A-k> <C-\><C-n><C-w>k
tnoremap <A-l> <C-\><C-n><C-w>l
nnoremap <A-h> <C-w>h
nnoremap <A-j> <C-w>j
nnoremap <A-k> <C-w>k
nnoremap <A-l> <C-w>l

let g:coc_global_extensions = ['coc-emmet', 'coc-css', 'coc-html', 'coc-json', 'coc-prettier', 'coc-tsserver', 'coc-eslint']

nmap <C-s> :w<CR>
imap <C-s> <Esc>:w<CR>

有没有办法知道发生了什么?

在您的 coc-settings.json 文件中,有一种方法可以添加某些文件类型,这些文件类型将在保存时进行格式化。也许这会有所帮助。

{
  "coc.preferences.formatOnSaveFiletypes": [
    "javascript"
  ]
}

您可以为此创建一个自动命令:

augroup Indentation
    autocmd!
    autocmd FileType javascript set shiftwidth=2
augroup END