質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Q&A

解決済

1回答

2210閲覧

neovimの日本語入力が勝手に切り替わる不具合について

melted-snow

総合スコア22

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

0グッド

0クリップ

投稿2022/07/31 11:44

編集2022/08/01 03:43

概要

neovim内で、日本語入力で記述すると、<Enter>を押して確定する度に、勝手に半角英数に戻ってしまいます。

実現したいこと

  • 日本語入力中に、<Enter>を押して確定しても、日本語入力のままになっていてほしい

詳細

例えば、insertモードに入り、<Shift>+<Caps>で日本語入力に変更、『こんにちは』と入力、そして<Enter>で入力を確定。その瞬間、半角英数入力に勝手に戻されてしまいます。
つまり、『こんにちは』などを入力し、<Enter>を押す度に、<Shift>+<Caps>で日本語入力に変更しないといけない、という具合です。

以前は普通に日本語入力できていたはずです。(「気がする」というレベルですが…)

試したこと

  • ググってはみたのですが、同様の症状は見当たりませんでした
  • vim-airlineをアンインストール

補足情報(FW/ツールのバージョンなど)

  • windows 10 version: バージョン 21H2 (OS ビルド 19044, 1865)
  • neovim version: NVIM v0.7.2
  • プラグインマネージャー: dein.vim
  • インストール中のプラグイン
    • preservim/nerdtree
    • mattn/emmet-vim
    • vim-airline/vim-airline

$MYVIMRC

vimscript

1"deinの設定 2let s:dein_dir = 'C:/Users/si910/.cache/dein' 3let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim' 4 5if &runtimepath !~# '/dein.vim' 6 if !isdirectory(s:dein_repo_dir) 7 execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir 8 endif 9 execute 'set runtimepath^=' . s:dein_repo_dir 10endif 11 12if dein#load_state(s:dein_dir) 13 call dein#begin(s:dein_dir) 14 15 let s:rc_dir = 'C:/Users/si910/.vim' 16 if !isdirectory(s:rc_dir) 17 call mkdir(s:rc_dir, 'p') 18 endif 19 let s:toml = s:rc_dir . '/dein.toml' 20 let s:lazy_toml = s:rc_dir . '/dein_lazy.toml' 21 22 call dein#load_toml(s:toml, {'lazy': 0}) 23 call dein#load_toml(s:lazy_toml, {'lazy': 1}) 24 25 call dein#end() 26 call dein#save_state() 27endif 28 29if dein#check_install() 30 call dein#install() 31endif 32 33let s:removed_plugins = dein#check_clean() 34if len(s:removed_plugins) > 0 35 call map(s:removed_plugins, "delete(v:val, 'rf')") 36 call dein#recache_runtimepath() 37endif 38 39"個人設定 40filetype plugin indent on 41syntax enable 42set number 43set fileformats=unix,dos,mac 44set tabstop=4 45set shiftwidth=4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

atled

2022/08/01 04:32

neovimを開いているターミナルアプリはなんでしょうか? というのも、私もWindows 11で同様の症状が出ているのですが、ターミナルアプリをWindows Terminalではなくレガシーコンソールやvscodeのターミナルに変更したところ解決したため、これはWindows Terminalの問題ではないかと考えているからです。
melted-snow

2022/08/03 14:28

おっしゃる通り、windows terminalです。 試しに、デフォルトのpowershellアプリやVSCodeでやってみたところ、確かに前述の不具合は見られませんでした。
guest

回答1

0

ベストアンサー

改めて調べてみると、以下のissueを見つけました。

https://github.com/microsoft/terminal/issues/13398

どうもWindows terminalとMicrosoft IMEのかみ合わせが悪いようです。
上記issueでは幾つかの回避方法が報告されていますが、私はMicrosoft IMEのオプションにある"以前のバージョンのMicrosoft IME を使う"スイッチをオンにすることで問題を回避しました。

投稿2022/08/04 02:26

atled

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melted-snow

2022/08/04 14:00

やってみるとうまくいきました。ご協力ありがとうございます!
atled

2022/08/29 06:52

追記 issueにある通りこの問題はある程度解決し、少なくとも入力確定時にIMEが英数に切り替わることはなくなりました。
melted-snow

2022/09/05 05:22 編集

日本語入力に関連する新しい問題が出てきたのですが、自力で解決できたので、それも追記しておきます。 問題の概要 日本語入力の確定で英数に戻ることはなくなったのですが、改行して次の行に移動すると英数に戻ってしまいます。 改行をしない限りは、その行で英数に戻ることはありません。 解決策 windows terminal のプレビュー版(Microsoft Storeで『Windows Terminal Preview』としてインストール可)では、その問題はみられなかったので、プレビュー版を使用しています。 ちなみに、プレビュー版だと、『以前のバージョンのMicrosoft IMEを使う』をオフにしても、前述の問題が起きませんでした。 バージョン情報 Windows Terminal: 1.14.2281.0 Windows Terminal Preview: 1.15.2282.0
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問