タイトル通り。
Neovim を使っているので一応このタイトルにしているが、特に Vim との違いとかって意図は無い。
自分は Linux でエディタとして Neovim 、デスクトップ環境として Xfce を使っているのだが、 フォーカスを切り替えるときにウィンドウ内の適当な場所をクリックして切り替えることが多い。
で、ブラウザで何かを調べながら、ターミナル( Neovim )で文章書いてたり設定ファイル弄るみたいなこともよくやっているが、 ターミナルをクリックしたときにカーソル位置がずれるのが結構ストレスになっていたので無効化した。
設定自体は1行なのだが、その1行を理解するために調べたこと。
設定作業
ググれば記事は色々ヒットするが、実際やることとしてはそれらと同じで以下を設定ファイル( .config/nvim/init.vim
なり .vimrc
なり)に足すだけ。
set mouse=
関連して調べたこと
mouse について
そもそもの mouse オプションについて。
mouse が何をしているオプションかというところから知らなかったので、ひとまず :help mouse
を確認。
'mouse' string (default "nvi")
global
Enables mouse support. For example, to enable the mouse in Normal mode
and Visual mode:
:set mouse=nv
To temporarily disable mouse support, hold the shift key while using
the mouse.
Mouse support can be enabled for different modes:
n Normal mode
v Visual mode
i Insert mode
c Command-line mode
h all previous modes when editing a help file
a all previous modes
r for hit-enter and more-prompt prompt
Left-click anywhere in a text buffer to place the cursor there. This
works with operators too, e.g. type d then left-click to delete text
from the current cursor position to the position where you clicked.
Drag the status-line or vertical separator of a window to resize it.
If enabled for "v" (Visual mode) then double-click selects word-wise,
triple-click makes it line-wise, and quadruple-click makes it
rectangular block-wise.
For scrolling with a mouse wheel see scroll-mouse-wheel.
Note: When enabling the mouse in a terminal, copy/paste will use the
"* register if possible. See also 'clipboard'.
Related options:
'mousefocus' window focus follows mouse pointer
'mousemodel' what mouse button does which action
'mousehide' hide mouse pointer while typing text
'selectmode' whether to start Select mode or Visual mode
The :behave command provides some "profiles" for mouse behavior.
:behave :be
:be[have] {model} Set behavior for mouse and selection. Valid
arguments are:
mswin MS-Windows behavior
xterm Xterm behavior
Using ":behave" changes these options:
option mswin xterm
'selectmode' "mouse,key" ""
'mousemodel' "popup" "extend"
'keymodel' "startsel,stopsel" ""
'selection' "exclusive" "inclusive"
ということで、マウス操作を有効化するモードを指定するオプションだった。
(自分の環境だと)デフォルトが mouse=nvi
になっているところを、mouse=
(有効化するモード無し)とすることで、マウス操作を全モードで無効化する形。
ちなみに mouse=
として全モードでマウス操作を無効化していても、ホイールスクロールは有効なままだった。
マウスを使った操作全般というよりは、ウィンドウ内のカーソル座標を使うイベントが mouse オプションでの有効無効の対象になっている感じだろうか。
ホイールスクロールについては特に困ってなかったので、それ以上は追わずそのままにしている。
余談だが、このヘルプ読んで Shirt キーとのコンビネーションで一時的に無効化できるということを初めて知った。
mouse-=a について
マウスの無効化の方法について調べていると、 set mouse-=a
としている記事もいくつかあった。
mouse オプションでの指定から全てのモードを削除する、
と雰囲気で解釈した( chmod a-x
とかでの -
と似たような感じ)のだが、自分の環境ではこれだと無効化されなかった。
-=
の理解が間違っているのかと思い一応 :help set
を見ると以下の感じ。
:se[t] {option}-={value} :set-=
Subtract the {value} from a number option, or remove
the {value} from a string option, if it is there.
If the {value} is not found in a string option, there
is no error or warning. When the option is a comma-
separated list, a comma is deleted, unless the option
becomes empty.
When the option is a list of flags, {value} must be
exactly as they appear in the option. Remove flags
one by one to avoid problems.
Also see :set-args above.
オプションの種類によって動きが違うが、以下のような処理をする演算子。
- オプションが数値
- 与えられた数値分減算する
- オプションが文字列
- 与えられた文字列が含まれている場合はそれを削除する
- 文字列がフラグのリストになっている場合は値の中に現れている通り正確に指定すること
デフォルトで mouse=nvi
となっているところから、 mouse-=a
で削除しようとしても a
が値に含まれていないので mouse=nvi
から変わらない。
( a
を全モードとして解釈してフラグを落としたりはしない)
ということで効かなかったらしい。
Neovim(Vim) のバージョンなのか使っているパッケージ(ディストリビューション)の設定なのかは分からないが、
場合によってはデフォルト値が mouse=a
になっていて、その場合の記事だったのかもしれない。