`gnome-terminal`環境で` vim`のマウスサポートを無効にする


47

編集:有効になっているマウスの問題は(バージョン3.4.1.1-1; gnome 3フォールバックモードを使用しています)にvim固有のようgnome-terminalです。を実行するとxterm、マウスサポートvimはデフォルトで無効になり、有効にするオプション(:set mouse=a、これは絶対に行いません)と無効にするオプションがあります(:set mouse=)。対照的に、で実行するvimgnome-terminal、マウスサポートはデフォルトで有効になり、無効にすることはできません(:set mouse=効果はありません)。端末エミュレータを変更する以外に解決策はありますか?


でマウスサポートを完全に無効にしvimます。私は実行していvimて7.3.547-3:バージョン2をgnome-terminalバージョン3.4.1.1-1。次のコマンドは、vimで直接実行されるか、.vimrcファイルに追加されるかにかかわらず、マウスサポートを無効にできません。

set mouse =
set mouse =""

vimマニュアルを読んでオンラインで投稿すると、これらのコマンドの一方または両方が機能するはずです。特に、vimマニュアルには次のように記載されています

'mouse'                 string  (default "", "a" for GUI, MS-DOS and Win32)
    The mouse 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 
    Normally you would enable the mouse in all four modes with: >
            :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

私はラップトップを使用しており、手でトラックパッドをブラッシングするたびに、vimのカーソル位置が突然移動します。

回答:


29

多くのLinuxフレーバーでこの悪い動作を引き起こすものを見つけました:

/usr/share/vim/vim80/defaults.vim # may be "vim81" depending on your vim version

何があるかどうそれはソースと"ません~/.vimrcが、あなたが持っている場合でも、/etc/vimrcまたは、そのような/etcファイルを、あなたが@lgpasqualeによって提案されたように、1つだけの空白を作成していない場合:

mkdir ~/.vim/; [[ -s ~/.vim/vimrc ]] && echo "aborted, file exists" || :> ~/.vim/vimrc

defaults.vimから得た他の機能(構文の強調表示など)が気に入った場合は、前のコマンドではなくこのコマンドを使用できます。

mkdir ~/.vim/; [[ -s ~/.vim/vimrc ]] && echo "aborted, file exists" || echo -e "source /usr/share/vim/vim80/defaults.vim\nset mouse=" > ~/.vim/vimrc

2
ありがとうございました!そのファイルの行「マウス-aは」(Archlinuxに)私のための問題を解決コメントアウト
luckyrumo

1
そのファイルを編集する必要はありません(archlinuxのvim-runtimeの一部です)。そのファイルに記載されているように、vimrcが見つからない場合にのみロードされます。それは.vimrc、あなたの家にファイルを置くことで問題が解決することを意味します(私にとってはそうでした)。何も含める必要はなく、空のファイルでもかまいません。
lgpasquale 16

これは、Fedora 25のための真の解決策である
KamikazeCZ

私は、これは後半に2017年に、Debian 8で私のために働い確認
Criggie

1
@rlf私の意見/usr/share/では、パッケージマネージャーによって管理されているファイルを編集するのは悪い考えです。オプションのいくつかを保持したい場合defaults.vim、それらをにコピーします~/.vimrc
lgpasquale

24

マウスのサポートはデフォルトで無効になっているため、何かがオンになっています。おそらくあなたset mouse=が失敗している理由は、それがオンになる前に実行されているためです。vimrcの残りの部分と、おそらくシステム全体のvimrcを調べます(/etc/vim/vimrc標準の場所です)。

最後の手段として、この非常にいハックを行うことができます。これにより、コマンドをエディターの制御を与える前の最後の操作の1つとして実行できます。

autocmd BufEnter * set mouse=

2
私の/etc/vim/vimrcファイルはかなりむき出しです(runtime! debian.vim条件付きですif filereadable("/etc/vim/vimrc.local") ; source /etc/vim/vimrc.local; endif)。/etc/vim/vimrc.localファイルには、私のシステムに存在しません。私の~/.vimrcファイルは、私が手動で追加した数行を持っています。のstracevim、設定ファイルの次の場所をチェックすることを明らかにします:/usr/share/vim/vimrc/etc/vim/vimrc.localENOENT)、および/home/user/.vimrc。(なぜENOENTエラーを受け取るのifですか?このステートメントは、この存在しないファイルを開こうとする試みを妨げないのですか?)。
user001

また、:set mouse=vimに直接入力した場合、これは設定ファイルの設定を上書きするべきではありませんか?なぜこのステートメントを直接実行vimすると、マウス制御が無効にならないのですか?
user001

1
@ user001 ENOENTas vimがファイルが存在するかどうかを確認する必要があることがわかります。これは通常、ファイルが存在しない場合statに戻る呼び出しによって行われENOENTます。
ウルリッヒダンゲル

2
@ user001ああ、現在のセッションに入力したときに機能しないという事実は重要な情報です。これに基づいて、問題がvimであるかどうかはわかりません。gnome-terminalは恐ろしいことをしているのかもしれません。別の端末エミュレーターを試すことはできますか?
パトリック

こんにちは、良い提案。私は試してみましたがxterm、マウスの起動に問題はありませんでした。実行して入力することで問題を再現することができます(入力:set mouse=aするvimことでxterm逆になります:set mouse=)。gnome-terminalグリッチをトラブルシューティングする方法はありますか?新しいスレッドを開始する必要がありますか?ありがとう。
user001

9

Fedora Server 25ホスト上のOS X「ターミナル」アプリでこれに遭遇しました。私はこれを.vimrcでこれで永久に解決しました:

set mouse=
set ttymouse=

これで、端末のスクロールバックでマウスを使って以前のbash履歴までスクロールできます。


vimの取得、更新場合vimrc.local文句が更新されるので、強く、同じカタログにvimrc.localを作成することをお勧めします
孤児

Raspbian 9.4で動作しました。他の回答では、PUTTY経由でログインしたときの望ましくないマウスの動作を解決できませんでした。
ドミトリー

他の人がカットアンドペーストする場合、 set ttymouse=矢印キーの動作、エスケープキーを変更するなど、奇妙な動作がありました。
mozboz

4

新しいVimのマウスに対する感度について、私はあなたとほぼ同じ不満を抱いていました。使用set mouse=""することも私にとってはしませんでした。

ファイルのset mouse=c下部に引用符がありません.vimrc。これは、Vimがマウスを使用しないように見えたが、「PuTTY」を使用して職場の私の(ugh!)Windowsマシンからsshする場合を除きます。PuTTYに貼り付けるには、shift-middle-buttonを使用する必要があります。

2018-03-30編集::mouse=不要なマウス効果を取り除くために、vimの一部のリモート(CentOS 6.7)インスタンスで(引用符などなしで)使用を開始しました。


こんにちは、提案をありがとう。これを.vimrcファイルに追加し、インタラクティブに実行してみました(:set mouse=c)が、どちらの場合も効果がありませんでした。
user001

3

これを追加してください.vimrc

if has("gui_running")
    "echo "yes, we have a GUI"
    set mouse=a
else
    "echo "Boring old console"
    set mouse=
endif

1
これは、尋ねられた質問とは無関係です。
GKFX

@GKFXよろしいですか?私には関係があるように見えます。has("gui_running")端末環境では0であることに注意してください。この回答は、他とは異なり、端末環境でマウスを無効にするだけの特別な努力を必要としますが、gvimでは有効のままにしておきます。
hvd

@hvd私はコメントを少し厳しく言いました。謝罪します。ただし、この回答では、OPがすでに試行したことをifブロックで囲んでいるため、役に立たない可能性があります。
GKFX

1
@GKFXフェアポイント。他の回答にも適用されます。
hvd

3

Debianストレッチでは、いくつかの中央設定がロード後に読み込ま/etc/vim/vimrc/etc/vim/vimrc.localます。参照/etc/vim/vimrc

...
" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
" If you don't want that to happen, uncomment the below line to prevent
" defaults.vim from being loaded.
"let g:skip_defaults_vim = 1
...

このファイルのデフォルトは/usr/share/vim/vim80/defaults.vimです。今すぐ下の中央ファイルを変更し/usr/share/...、IS

  • 悪の
  • 永続的ではない、更新後に元に戻される

設定skip_defaults_vim上の行をuncommentigでは、そのファイルで設定された他のすべてのオプションを削除します。不要なオプションを削除するには、次を入力し/etc/vimrc.localます。

" /etc/vim/vimrc.local
" honor skip_defaults_vim from the master /etc/vim/vimrc file
if ! exists('skip_defaults_vim')
  " Source the defaults file manually from here
  source $VIMRUNTIME/defaults.vim
endif

" avoid loading the defaults twice
let g:skip_defaults_vim = 1

" revert any unwanted changes the defaults file introduced
set mouse=

" set any other options you want centrally on your system
"set paste " uncomment if you want paste insert enabled
"...

これにより、defaults.vim手動でロードされ、自動ロードがオフになります。したがって、.vimrcユーザーアカウントごとにを作成することなく、不要な設定を元に戻すことができます。


あなたの答えはついに、Debian 10 "Buster"における私の問題に対する真の解決策を与えてくれました。どうもありがとう。
aef

0

質問に多少関連しますが、neovim(nvim)を使用している場合set mouse=は、~/.config/nvim/init.vim構成ファイルに入れる必要があります。

ディレクトリが存在しない場合は、で作成します mkdir -p ~/.config/nvim/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.