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

问题描述

我想使用 <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>

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

解决方法

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

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...