it-swarm-eu.dev

zakázání podpory myši v prostředí `vim` v prostředí` gnome-terminal`

Upravit: Problém povolené myši v vim se zdá být specifický pro gnome-terminal (verze 3.4.1.1-1; používám záložní režim gnome 3). Pokud spustím xterm, podpora myši v vim je ve výchozím nastavení zakázána a mám možnost ji povolit (:set mouse=a, což nikdy neudělám) a deaktivuji (:set mouse=). Naopak, když spustím vim in gnome-terminal, podpora myši je ve výchozím nastavení povolena a není možné ji deaktivovat (:set mouse= nemá žádný účinek). Existuje řešení měnící se emulátor terminálu?


Chci úplně zakázat podporu myši v vim. Používám vim verze 2: 7.3.547-3 až gnome-terminal verze 3.4.1.1-1. Následující příkazy, ať už jsou prováděny přímo v vim nebo přidány do mého .vimrc soubor, selhání podpory myši:

set mouse =
set mouse =""

Na základě čtení manuálu vim a příspěvků online by jeden nebo oba tyto příkazy měly fungovat. Zejména vim manuál uvádí následující

'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.

Používám notebook a pokaždé, když moje ruka kartáčuje trackpad, moje poloha kurzoru ve vimu se náhle pohne.

49
user001

Zjistil jsem, co způsobuje toto špatné chování s mnoha příchutí linuxu:

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

je to 'sourced', pokud neexistuje ~/.vimrc ale i když máte /etc/vimrc nebo podobné /etc soubor, takže pokud jej nemáte, vytvořte jen prázdný, jak navrhuje @lgpasquale:

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

Pokud se vám líbily další funkce (jako je zvýraznění syntaxe), které jste dostali od defaults.vim, můžete použít tento příkaz spíše jako předchozí:

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

podpora myši je ve výchozím nastavení zakázána, takže se něco zapíná. Pravděpodobně důvod vašeho set mouse= selhání je, protože běží před tím, než je zapne. Prohlédl bych si zbytek vašeho vimrc a možná celého systému vimrc (/etc/vim/vimrc je standardní umístění).

Jako poslední možnost můžete udělat tento opravdu ošklivý hack, který způsobí, že příkaz bude spuštěn jako jedna z posledních věcí, které uděláte dříve, než vám dáte kontrolu nad editorem.

autocmd BufEnter * set mouse=
24
Patrick

Narazil jsem na to v aplikaci OS X "Terminal" na hostiteli Fedora Server 25. Trvale jsem to vyřešil ve svém .vimrc s:

set mouse=
set ttymouse=

Nyní se pomocí myši posunu nahoru k mé předchozí historii bash v scrollback terminálu.

9
Robpol86

Měl jsem skoro stejné stížnosti jako ty na citlivost novějšího Vima na myš. Použitím set mouse="" neudělal to ani pro mě.

Mám set mouse=c (bez uvozovek) v dolní části mého .vimrc soubor. Zdálo se, že to Vimovi brání používat myš, s výjimkou případů, kdy k práci s mým (ugh!) Windows strojem pracuje „PuTTY“. K vložení do PuTTY musím použít shift-prostřední tlačítko.

2018-03-30 Úpravy: Nyní jsem začal používat: :mouse= (žádné uvozovky nebo cokoli) na některých vzdálených (CentOS 6.7) instancích vim, jak se zbavit nežádoucích efektů myši.

4
Bruce Ediger

Na debianovém úseku jsou načtena některá centrální nastavení po loading /etc/vim/vimrc a /etc/vim/vimrc.local. Viz /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
...

Výchozí hodnota tohoto souboru je /usr/share/vim/vim80/defaults.vim. Nyní mění centrální soubor pod /usr/share/... je

  • zlo
  • nestálé, po aktualizaci se vrátí zpět

Nastavení skip_defaults_vim odkomentováním výše uvedeného řádku odeberete všechny ostatní možnosti nastavené tímto souborem. Chcete-li jen odstranit nežádoucí možnosti, vložte do /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
"...

Tím se načte defaults.vim ručně a vypne automatické načítání, což vám dává šanci vrátit jakékoli nežádoucí nastavení zpět, aniž byste museli vytvořit .vimrc pro každý uživatelský účet.

3
Holger Böhnke

Přidejte toto do svého .vimrc:

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

Trochu souvisí s otázkou, pokud používáte neovim (nvim), měli byste dát set mouse= ve vašem ~/.config/nvim/init.vim konfigurační soubor.

Pokud adresář neexistuje, vytvořte jej pomocí mkdir -p ~/.config/nvim/

0
Marcelo Lacerda