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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Vim

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

2回答

2610閲覧

NeoVimでインサートモードを抜けたときにIMEをOFFにしたい

yoosan

総合スコア11

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Vim

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

1クリップ

投稿2023/01/02 01:00

編集2023/01/09 17:11

前提

■PC
機種名: MacBook Pro
機種ID: MacBookPro11,1
プロセッサ名: デュアルコアIntel Core i5
プロセッサ速度: 2.6 GHz
■OS
macOS Big Sur version11.7
■IME
ATOK for Mac Ver.32.3.1
■コンソール
Alacritty version 0.11.0
■Macのシェル
zsh 5.8 (x86_64-apple-darwin20.0)
■仮想環境
limactl version 0.14.2
■インスタンス
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
(limaのdockerテンプレートでインストール)
■ubuntuのシェル
zsh 5.8.1 (x86_64-ubuntu-linux-gnu)
■NeoVim
NVIM v0.8.2

limaを使ってMac上にubuntuを立ち上げ、ubuntuにNeoVimをインストールしています。

実現したいこと

インサートモードを抜けた際にIMEをOFFにしたい。
可能であれば、NeoVimの機能で実現したいが、OSレベルやコンソールレベルで、ESCを押した際に、IMEがOFF(ON、OFFのトグルではなくOFF)にできれば満足できると思う。

試したこと

○ iminsertオプション等を使う方法
https://neovim.io/doc/user/options.html
NeoVimのコマンドで
:inoremap <ESC> <ESC>:set iminsert=0<CR>
を実行したが、ESCを押してもIMEがオフにならない。
ESCを押すと、ステータスバーに iminsert=0 と表示はされているので、オプションが機能していないと思われる。
imdisableも同じく機能していないと思われる。

○ im-selectを使う方法
https://github.com/daipeihust/im-select
ubuntu上で
brew tap daipeihust/tap && brew install im-select
を実行したが、コマンドがインストールされず、断念しました。
brew listにはim-selectが表示されたが、インストール先フォルダと思われる/usr/local/bin/ にファイルがダウンロードされていなかった。

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

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

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

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

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

guest

回答2

0

ベストアンサー

自分は zenhan 使ってます。環境が全然違うので想定通りの挙動をするかわかりませんが。

zenhan.exe へのパスを通して、init.vim に次の行を追加してます。

init.vim

1if executable('zenhan') 2autocmd InsertLeave * :call system('zenhan 0') 3autocmd CmdlineLeave * :call system('zenhan 0') 4endif

投稿2023/01/02 09:39

編集2023/01/02 09:45
Demerara

総合スコア397

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

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

yoosan

2023/01/02 10:08

Demeraraさん 回答ありがとうございます。  紹介をいただいた方法はWindows用のようですので、試すことはできませんが、IMEを操作するためにOSのAPIを使う必要があるんですね。(違ったらすみません。)  私の環境の場合、NeoVimが動いているのは仮想環境のUbuntu上ですから、仮想環境からホストPC(mac)のシステムにアクセスするのは、現実的ではない気がしてきました。  意外とむずかしいことがわかりました。  ありがとうございました。
yoosan

2023/01/02 10:09

 NeoVimの機能での解決方法に限らず、ホストPC上でESCを押したら、エスケープ+IMEがOFFになる方法など、よい方法があれば教えてください。
Demerara

2023/01/02 19:10

なるほど、質問文を読んだ時にも思いましたがやはり結構複雑ですね。 何か気付いたらまたコメントします。
guest

0

Karabinerを使う方法で解決しました。

1 Karabinerをインストール

ターミナルで
brew install --cask karabiner-elements
を実行

2 Karabiner-elementsを起動
3 ルールをインポート

Complex Modifications -> Add rule -> Import more rules from the Internet(Open a web browser) -> 「vim」で検索 -> 「For Japanese (日本語環境向けの設定)(rev 6)」をインポート

4 ルールを追加

escキーを押したときに、英数キーも送信する(vim用)
Ctrl+[を押したときに、英数キーも送信する(vim用)

これだとどのアプリを使っていても4のルールが適用されてしますが、とりあえずは動くのでこれでやってみようと思います。

投稿2023/01/09 08:08

編集2023/01/09 08:11
yoosan

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問