Sistema atualizado - o vim começa a lembrar as posições do cursor - livrar-se disso


1

No Debian 8, o vim estava abrindo arquivos como eu esperava, colocando o cursor na primeira coluna da primeira linha. Agora no Debian 9, provavelmente uma nova versão do vim, "lembra" a última posição do cursor de um nome de arquivo. Isso é extremamente irritante git commit, porque coloca o cursor em algum lugar nos comentários, mesmo que o arquivo de mensagens de confirmação não tenha qualquer relação com o arquivo de mensagens de confirmação aberto anteriormente.

Como posso desativar esse "recurso", fazendo com que o vim coloque o cursor no início do arquivo quando eu abri-lo?


$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Feb 13 2017 00:56:16)
Included patches: 1-197, 322
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by pkg-vim-maintainers@lists.alioth.debian.org
Huge version without GUI.  Features included (+) or not (-):
+acl             +file_in_path    +mouse_sgr       +tag_old_static
+arabic          +find_in_path    -mouse_sysmouse  -tag_any_white
+autocmd         +float           +mouse_urxvt     -tcl
-balloon_eval    +folding         +mouse_xterm     +termguicolors
-browse          -footer          +multi_byte      +terminfo
++builtin_terms  +fork()          +multi_lang      +termresponse
+byte_offset     +gettext         -mzscheme        +textobjects
+channel         -hangul_input    +netbeans_intg   +timers
+cindent         +iconv           +num64           +title
-clientserver    +insert_expand   +packages        -toolbar
-clipboard       +job             +path_extra      +user_commands
+cmdline_compl   +jumplist        -perl            +vertsplit
+cmdline_hist    +keymap          +persistent_undo +virtualedit
+cmdline_info    +lambda          +postscript      +visual
+comments        +langmap         +printer         +visualextra
+conceal         +libcall         +profile         +viminfo
+cryptv          +linebreak       -python          +vreplace
+cscope          +lispindent      -python3         +wildignore
+cursorbind      +listcmds        +quickfix        +wildmenu
+cursorshape     +localmap        +reltime         +windows
+dialog_con      -lua             +rightleft       +writebackup
+diff            +menu            -ruby            -X11
+digraphs        +mksession       +scrollbind      -xfontset
-dnd             +modify_fname    +signs           -xim
-ebcdic          +mouse           +smartindent     -xpm
+emacs_tags      -mouseshape      +startuptime     -xsmp
+eval            +mouse_dec       +statusline      -xterm_clipboard
+ex_extra        +mouse_gpm       -sun_workshop    -xterm_save
+extra_search    -mouse_jsbterm   +syntax          
+farsi           +mouse_netterm   +tag_binary      

Respostas:


1

A opção que você está procurando é 'viminfo'. Desvinculá-lo para filtypes específicos em ~/.vim/ftplugin ou globalmente .vimrc:

set noviminfo

Obrigado, como eu configuraria isso apenas para arquivos nomeados COMMIT_EDITMSG?
— 0__

@ 0__: algo como o seguinte em .vimrc: autocmd BufReadPost COMMIT_EDITMSG setlocal noviminfo.
— Thor

0

Parece que você tem um BufReadPost autocmd que está sendo definido pelo sistema vimrc. Verifique fazendo :verbose autocmd BufReadPost * e procure por uma linha semelhante a esta:

if line("'\"") > 0 && line ("'\"") <= line("$") |   exe "normal! g'\"" | endif

A linha imediatamente seguinte deve informar qual arquivo de inicialização definiu.

Se é o sistema vimrc, e se você tem o seu próprio ~/.vimrc isso não deve estar acontecendo, a menos que o seu esteja explicitamente fornecendo o sistema vimrc.


Obrigado, ele diz "Último conjunto de /usr/share/vim/vim80/defaults.vim"
— 0__

Novamente, esse arquivo não deve ser carregado automaticamente se você tiver um ~/.vimrc. Você tem um? Em caso afirmativo, ele está carregando explicitamente um sistema vimrc?
— Heptite

Não, eu não tenho esse arquivo. Mas eu não quero perder padrões de outra forma úteis. Então, como eu criaria ~/.vimrc de modo que ele carregue os padrões e, em seguida, apenas sobrescreve noviminfo para um determinado nome de arquivo ( COMMIT_EDITMSG )
— 0__

Você não quer sobrescrever o noviminfo (eu diria que a outra resposta à sua pergunta está incorreta). Eu apenas copiava as partes do defaults.vim que você quer para o seu ~/.vimrc, excluindo aqueles que você não possui. Eventualmente, você provavelmente quer o seu próprio vimrc, então é melhor agora que depois.
— Heptite
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.