如何更改VIM中的JSX缩进规则?

pie*_*bot 4 vim jsx

目前,我正在使用两个插件在 VIM 中格式化我的 JS(X) 代码:

  • pangloss/vim-javascript
  • mxw/vim-jsx

我们的团队选择,当我们的 React 组件的 props 溢出到多行时,我们希望这些属性与第一行的属性对齐,如下所示:

期望:

<Toggle label={dragString} toggled={this.props.canDrag} onToggle={this.toggleDrag}
        thumbStyle={toggleStyles.thumbOff}
        thumbSwitchedStyle={toggleStyles.thumbOn}
        trackStyle={toggleStyles.trackOff}
        trackSwitchedStyle={toggleStyles.trackOn}
/>
Run Code Online (Sandbox Code Playgroud)

相反,它看起来像vim-jsx总是在新行上将 props 缩进两个空格(这就是我们设置的制表符大小):

实际发生的情况:

<Toggle label={dragString} toggled={this.props.canDrag} onToggle={this.toggleDrag}
  thumbStyle={toggleStyles.thumbOff}
  thumbSwitchedStyle={toggleStyles.thumbOn}
  trackStyle={toggleStyles.trackOff}
  trackSwitchedStyle={toggleStyles.trackOn}
/>
Run Code Online (Sandbox Code Playgroud)

我可以在我的.vimrc或对vim-jsx插件代码中进行更改,以使新行上的 React 组件 props 与第一行上的 props 对齐吗?

sou*_*ake 6

.js就我而言,对于我的以下文件中包含此行的文件,我已经按预期进行了缩进.vimrc

autocmd FileType javascript setlocal shiftwidth=2 tabstop=2
Run Code Online (Sandbox Code Playgroud)

为了在文件中获得类似的行为.jsx,我还需要添加:

autocmd FileType javascriptreact setlocal shiftwidth=2 tabstop=2
Run Code Online (Sandbox Code Playgroud)

可以:set filetype在vim中运行,根据vim显示文件类型;在这种情况下javascriptreact