ワイヤード・パンチ

元・大阪人が、岡山の山奥でも生きていけることを証明するためのブログ。

VSCode 1.28.1でEmmetが効かなくなり、なおかつ自動更新を無効化できない。

Adobe Bracketsが1.8以降、IMEの予測変換の位置がずれるバグが起きるようになり、いまだに直らないので、移行先のテキストエディタとして使ってきた、Visual Studio Code。

しかしそのVSCodeも最近になって配信されたバージョン1.28.1にて、作業に支障を来たすほどのバグが発生するようになってしまいました。

さらに、そのバグが起きる最新バージョンを避けたいのに、古いバージョンに戻しても勝手に最新版にアップデートしてしまうのをなぜか止められず、非常に困っています。

広告

Emmetのバグについて。

短縮ワードを入れてコマンドを実行することで、正式な入力値に自動変換してくれるEmmet。

コーディングするうえでは欠かせない存在となっているでしょう。

そのEmmetが、VSCodeには標準搭載されています。

Bracketsでは拡張機能でしたが、VSCodeでは拡張機能を入れずにEmmetを使用できます。

それはさておき、最初に貼った写真ように、sassファイルを編集中に「mb0」と入力し、Emmetのコマンドを実行して「margin-bottom: 0」に変換しようとしました。

しかし、いくらコマンドを入力しても、Emmetによる展開を実行することができません。

mb0に限らず他の値でも、というか何を入れてもまったく展開できません。

なお、Emmetのデフォルトの展開コマンドは非常にやりにくいので、当環境の場合は「Ctrl+E」で実行するようにしています。

それが影響しているのかどうかは調べていないのでわかりませんが、仮にもとのコマンドで展開できるようになったとしても、そんな打ちづらいコマンドでは作業がままなりません。

やはり今のコマンドで展開してくれないと困ります。

念の為キーボードショートカットの一覧を確認してみましたが、Ctrl+Eに別のコマンドが重複しているわけではありませんでした。

古いバージョンのダウンロード方法。

Emmetで展開できないのは、現在の最新版であるバージョンが1.28.1のときだけ発生します。

その前に使っていたバージョン1.27.2に戻すことで、Emmetのバグはひとまず起こらないようになりました。

ただ、ダウングレードはVSCode上から当然できるわけはなく、その古いバージョンのインストーラーを探してこないといけません。

VSCodeをロールバック(以前のバージョンに戻)した – エディタ

上記のサイトにてその手順が記載されているので、参考に。

Visual Studio Code August 2018

バージョン1.27.2であれば、上記サイトからすぐにダウンロードできます。

なお、Bracketsだと古いバージョンをインストールするとき、いったん今インストール済みのものをアンインストールする必要がありました。

でも、VSCodeではそのまま上書きで古いバージョンをインストールできるのが楽です。

自動更新が止められない。

そしてバージョンを過去のものに戻し、問題が解決するまでは古いバージョンのままやっていこう。

と思ったのもつかの間。

いったんVSCodeを終了してから再度起動すると、勝手にバージョンを1.28.1に上げられていたのです。

今、最新版にされるのは非常に困るのに…。

VS Codeの自動更新を有効化/無効化するには:Visual Studio Code TIPS – @IT

というわけで、上記サイトなどを参考に、自動更新を停止することにしました。

上記サイトの場合だとjsonファイルを編集する形式になっていますが、バージョン1.27.2からは、ちゃんとした設定画面が用意されています。

よって、jsonファイルを自ら編集する必要はなくなり、楽に設定を変更できるようになっていました。

まず、上部メニューから「ファイル」→「基本設定」→「設定」へ進みます。

多数の設定項目があって探すのが大変なので、上の検索窓に「update」と入力することで絞り込みができます。

そして「Update: Channel」を「none」に変更してOK。

いや、それでOKのはずなのですが、先程書いたように、起動し直すとなぜか最新版に…。

「Update: Enable Windows Background Updates」も念の為無効化してみましたが、それでも結果は同じ。

バージョン1.27.2特有の問題なのか、それ以前から起きているのかは不明ですが、さらに過去バージョンに戻すのは、それはそれで別の問題が起きそうなので面倒。

よって、今のところはVSCodeを終了するたびに、インストールし直すしかなさそうです。

あとで、今回のすべての問題について、Githubにissueを投げておいた方がいいかもしれませんね…。

余談。

冒頭で書いたように、Bracketsは1.8以降ずっとIMEの問題が直らないので、まともに使えない。

VSCodeは、最近になってとうとう、作業に支障を来たすバグが出てしまった。

もうこれら2つのテキストエディタを、まともに使うことはできないのでしょうか?

あと残りはAtomであり、これも以前使ったことがあるのですが、何かがやりにくくてやめてしまった。

でも、それが何だったかは、思い出せず。

テキストエディタ探しの旅は終わらないですね…。

追記。(2018/10/18)

VSCodeのバージョン1.28.2が配信されましたが、Emmetの展開コマンドが使えない問題は、相変わらず直っていませんでした。

最優先で直すべき問題なのですが…。

追記。問題解決。(2018/10/24)

Emmet keybind not working · Issue #61568 · Microsoft/vscode

Emmetの問題についてGithubでissueを投稿したところ、解決方法をいただくことができました。

まずは「ファイル」→「基本設定」→「キーボードショートカット」に進みます。

高度なカスタマイズを行うには、次を開いて編集: keybindings.jsonと書かれている一文の、ファイル名の部分をクリックします。

すると、ペインが二分割され、左ペインにはデフォルトのキーバインド、右にはカスタマイズしたキーバインドが記載されたjsonファイルが開かれます。

そして今回、Emmetの展開コマンドをCtrl+Eに変えるために入力した行があります。

{
	"key": "ctrl+e",
	"command": "editor.emmet.action.expandAbbreviation",
	"when": "config.emmet.triggerExpansionOnTab && editorTextFocus && !editorReadonly && !editorTabMovesFocus"
},

上のテキストから、「config.emmet.triggerExpansionOnTab」を取り除きます。

{
	"key": "ctrl+e",
	"command": "editor.emmet.action.expandAbbreviation",
	"when": "editorTextFocus && !editorReadonly && !editorTabMovesFocus"
},

これで、バージョン1.28.1でも、Ctrl+EによるEmmet展開が、無事に行われるようになりました。

なお、アップデートを無効化できない件は未解決のままですが、もうダウングレードする必要はなくなったので、ひとまず置いとくことにします。

VSCodeに関する商品探してたら、ぜんぜん違うものが出たけど、絵が気になったので。