Vim'de, bir dosyayı son kapattığım aynı satır numarasında nasıl açabilirim?


141

Vim'i, bıraktığım yerde aynı dosyayı açacak şekilde yapılandırmak istiyorum.

vim 

: '"kesme işareti ve ardından çift tırnak son değişiklik satırını yönlendirir
Dhiren Hamal

Yanıtlar:


195

Ubuntu /etc/vim/vimrcdosyasından bu örnek yorumlanmıştır:

" Uncomment the following to have Vim jump to the last position when                                                       
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

Bu işe yaramazsa, genel bir sorun ~/.viminfodosyanızın sahipliğinden kaynaklanmıyor . Bu durumda, çalıştırın:

sudo chown user:group ~/.viminfo

burada kullanıcı sizin adınızdır usernameve groupgenellikle kullanıcı adınızla aynıdır.


9
Autocmd doğrudan vim doc'dan çıkar. Bakınız: son pozisyon-atlama yardım
user55400 8

19
Sondan bir önceki satırdaki tek tırnak bir ters tırnak olarak değiştirilirse, yalnızca bu satırın başlangıcına değil, gerçek imleç konumuna \| exe "normal! g`\"" | endif
atlar

4
chownKısmı bana sorun giderildi. Şapka çıkartın!
slowpoison

2
Sonunda birisi benim .viminfo'mun bir nedenden ötürü kök sahibi olduğunu gösteriyor Bunun okuduğum diğer 100 belgede olması gerekiyor.
Jack

2
Eklemeyi + 1'lemek istiyorum chown user ~/.viminfo. Bunu bir saattir anlamaya çalışıyordum ve az önce günümü kurtardın.
Christopher Reid

48

Basitlik için ticaret otomasyonunun sakıncası yoksa, '"bir dosyayı açarken tuşa (kesme işareti, ardından çift tırnak işareti) basmanız yeterlidir, bulunduğunuz yere atlarsınız. @ Marcog'un cevabı budur.


24
  :h views-sessions

Bunu .vimrc'nize yerleştirebilirsiniz :

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview

görünümler $ HOME / .vim / view dizinine yerleştirilir. Muhtemelen bu dizinleri oluşturmanız gerekir.


Bu cevabı beğendim çünkü diğeri Mac'imde olmayan bir / etc / vim / dosyasına atıfta bulundu.
MarkHu

15

Vim'yi kullanarak bir dosya adı belirtmeden başlatabilirsiniz.

vim 

Ardından üzerinde çalıştığınız herhangi bir dosyadaki son konuma gitmek için CTRL + O tuşlarına iki kez basın.


NERDTree yüklüyse, Co düğmesine iki kez basmak geçerli arabellekte NERDTree'yi açabilir. Benim durumumda, bazen Co'ya beş kez basmam gerekiyor, ama sonunda @MatAff tarafından açıklanan etkiyi elde ediyorum.
ashrasmun

Bir Ctrl-ckez basmak benim için yeterli. Buna ek olarak, Ctrl-cdaha fazla tuşa basmak beni imleç pozisyonu histroyuna geri götürür (hatta açılmamış ilgili dosyaları açmak). Neovim 0.4.2 kullanıyorum, ancak benim anlayışım bunun da geçerli olduğudur vim.
T_T

7

Viminfo'yu etkinleştirdiyseniz, `0son düzenlenen dosya konumuna gitmek kadar basittir . Bunun sadece bir 'işarete git' komutu olduğunu fark edeceksiniz;

Gerçekten de, daha sonra düzenlenen üçüncü konuma (belki de başka bir dosyada) gitmek için daha sonra '3' yapabilir ve daha sonra `0tekrar sonuncu konuma dönebilirsiniz.

Bir bak bakalım

 :marks

hatırlanan yerleri görmek için. Ayrıca viminfo'nun her türlü başka şeyi (kayıtların içeriği, dosya başına işaretler, komut ve arama geçmişi gibi) depoladığını unutmayın. Çoğu insan bunu bariz nedenlerle etkinleştirdi


`0, Mac'te vim 7.4.1689 sürümünde benim için çalışmıyor. Ama '0 hile yapar. Cevapta bir yazım hatası var mı?
alamoot

@alamoot hayır öyle değil, bakın vimdoc motion.txt sizin hangi karakteri kontrol - `anahtar aslında oluşturur veya yapmak:verbose map `
sehe

Haklısın. Vimdoc'a göre her ikisi de doğru!
alamoot

6

Dosyalarınızı bıraktığınız yerde açacak vim-lastplace (yazarım) adında bir eklenti var . Normalde yeni bir mesajı düzenlediğiniz ve taahhüt mesajı dosyasının en üstünde başlamak istediğiniz için, taahhüt mesajlarını yok sayarak yukarıdaki önerileri iyileştirir.


eklentiler olmadan yapabileceğiniz en iyisi. .vimrc için amaç: daha küçük ve daha hızlı kod daha küçük
nilon

1

Bazen ~/.viminfosalt okunur hale gelir veya kullanıcınızın dosyaya erişimi olmaz. Bu, vim'inizin dosyanızı kapattığınızda imleç konumunuzu kaydetmemesinin bir nedeni olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.