Skip to content

Instantly share code, notes, and snippets.

@hyuki

hyuki/chat.md Secret

Last active May 29, 2023 17:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hyuki/4e8ebe19b402bf45f1b1c4826a3c5a5d to your computer and use it in GitHub Desktop.
Save hyuki/4e8ebe19b402bf45f1b1c4826a3c5a5d to your computer and use it in GitHub Desktop.
#ChatGPT と結城浩の対話: VimでYAMLをフォーマットしたときのインデントがおかしい?→Commentにvim-ansible-yamlを使った解決あり

Model: Web Browsing

Date: 2023-05-29

VimでYAMLファイルのフォーマットをしたときにコメントのインデントがおかしいんですが、私のYAMLの書き方がわるいのか、Vimの設定が悪いのかがわかりません。以下のgistを見てアドバイスをお願いします。https://gist.github.com/hyuki/b4dbe525a9f87a1d6bfc900601b64250

Finished browsing

ご提示いただいたコードを見ると、コメント行がインデントされているようです。この問題はVimの設定によるものかもしれません。

具体的には、Vimの自動インデント設定や、特定のファイルタイプ(この場合はYAML)に対するインデント設定が影響している可能性があります。

以下の手順で問題を解決できるか試してみてください。

VimがYAMLファイルを正しく認識しているか確認します。Vim内で :set filetype? を実行し、結果が filetype=yaml であることを確認します。

VimのYAMLに対するインデント設定を確認します。:verbose set indentexpr? を実行し、その結果を確認します。

VimのYAMLのインデント設定が問題を引き起こしている場合、その設定を無効化するか、あるいは調整することで問題を解決できるかもしれません。具体的には、~/.vimrc ファイル(もしくは適切な設定ファイル)に以下の行を追加することで、YAMLのインデントを無効化できます。

autocmd FileType yaml setlocal indentexpr=

Vimの全体的な自動インデント設定が問題を引き起こしている場合、それを無効化することで問題を解決できるかもしれません。:set autoindent? を実行して自動インデントが有効化されているか確認し、必要であれば :set noautoindent で無効化してみてください。

これらのステップを試した結果、問題が解決しない場合は、具体的なVimの設定や使用しているプラグイン等の詳細情報が必要かもしれません。

また、YAMLのコメントは通常、その行の項目と同じレベルのインデントを持つか、もしくは全くインデントを持たないことが多いです​1​。したがって、Vimの設定が原因である可能性が高いと思われます。

@hyuki
Copy link
Author

hyuki commented May 28, 2023

@hyuki
Copy link
Author

hyuki commented May 29, 2023

set: filetype?filetype=yamlとなっていた(正しい)。

@hyuki
Copy link
Author

hyuki commented May 29, 2023

image

正しそうに見える。

@hyuki
Copy link
Author

hyuki commented May 29, 2023

@hyuki
Copy link
Author

hyuki commented May 29, 2023

@hyuki
Copy link
Author

hyuki commented May 29, 2023

とりあえずの解決

以下の設定で結城の目的は達成できた。
なお、ファイル名は結城固有の環境依存なので意味を汲んでください。

参考

`~/.vim/filetype.vim

augroup filetypedetect
  au BufRead,BufNewFile *.yaml setfiletype ansible
  au BufRead,BufNewFile *.yml  setfiletype ansible
augroup END

~/.vim/local/DeinPlugins.vim

call dein#add('chase/vim-ansible-yaml') " for YAML indent

" snip

let g:ansible_options = {'ignore_blank_lines': 0}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment