vim son pozisyonu hatırlamıyor


89

Ubuntu LTS 12.04'te vim editör var. Bir dosyayı açarsam paragrafa geçip vim'i yeniden açarsam, imleç her zaman dosyanın başlangıcına gider.

Beklenen davranış bu değil. Vim, bir dosyayı kapattıktan sonra son okuma konumunu nasıl hatırlayabilir?

Ben de denedim viama sonuç aynı.


1
Üzgünüm ama olması gerektiğini söyleyen 0 belge var. Vim için durumdan% 100 emin misin? Ve üzgünüm, son pozisyonunu hatırlayacak şekilde nasıl yapılandıracağım hakkında hiçbir fikrim yok. Bana gereksiz bir yorum yapabilir, ancak programı daha önce de yaptıysanız, bilmeliyim.
Denny

4
Örneğin Redhat'ta, bir dosyadaki en son hakemli satır vim tarafından hatırlanır. vim ubuntu'da uygunsuz gözüküyor 12.04
Ay Mantarları

Ayrıca Ubuntu 10.04'te bu kesinlikle varsayılan davranış değildir. Ubuntu'da Vim'i uzun zamandır kullanıyorum, beklenen davranışınızı hiç görmedim. Muhtemelen bunu kurulum sırasında yapacak şekilde yapılandırmışsınızdır - örneğin @GaryBishop'un cevabına bakınız.
gertvdijk

Maalesef Ubuntu 10.04 değildi, işe yarayan kırmızı şapkalıtı. Yorumumu güncelle
Lunar Mantar

Yanıtlar:


116

Çözüldü:

/ Etc / vim / vimrc

Zaten gerekli özelliği içeriyor. Sadece onu rahatsız etmen gerekiyor:

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

(Infact, ayrıca /usr/share/vim/vim73/vimrc_example.vim adresini de inceleyebilirsiniz)


Diğer kullanıcılar ile değil, sadece kök kullanıcı ile çalışıyor gibi görünüyor. Benim vimrc dosyam -rw-r--r-- 1 root root; sorun bu mu olurdu?
ADTC

2
Bir kullanıcının son pozisyonunu hatırlayacağı tuhaf bir problem vardı ama başkaları yoktu. Bu satırların kullanıcının .vimrc dosyasında olduğu, ancak / etc / vim / vimrc içinde yorumlandığı anlaşıldı. Onları uncommenting tüm kullanıcılar için sağladı.
17'de

66

Aynı sorunu yaşadım ve ana dizindeki .viminfo dosyasının yanlış sahipliğe sahip olduğu ortaya çıktı. Root: root'a aittir.

Dosya sahipliğini kendime değiştirerek düzelttikten sonra, dosya pozisyonunu hatırlamak benim için tekrar çalışmaya başladı


3
Bu şeyler benim durumumda işe yaradı. Ben de aynı sorunu yaşıyordum. Vim sorunlarını düzelten .viminfo'nun (ana dizinde bulunur) sahipliğini değiştirdim. Ama neden root ile yaratıldı: root?
Brijesh Valera

1
@BrijeshValera muhtemelen dosya henüz mevcut değilken vim root olarak başladığınız için.
Ruslan,

1
@Ruslan Fakat o zaman dosya kök kullanıcının ana dizininde oluşturulmuş olmamalı mıydı?
ankush981

5
@dotslash olan zor sudo. Ortamı değiştirmez (en azından çoğunlukla): koşmayı deneyin sudo bash -c 'echo $HOME', kök dizinin yerine ana dizininizi alın.
Ruslan

1
18.04
Hanynowsky


2

Vim-lastplace (yazarım ben) dosyalarınızı bıraktığınız yerden açacak bir eklenti var . Genellikle yeni bir mesajı düzenleyeceğiniz ve taahhüt mesajı dosyasının başında başlamak istediğiniz için, kabul mesajları dikkate alınmadığında yukarıdaki önerileri geliştirir.


neden aşağı oy? vim-lastplace, OP'nin istediğini tam olarak yapar ve kabul edilen yanıttan daha iyi yapar (içinde birkaç hata vardır).
Greg Dietsche

0

Benim durumumda, vi bir sembolik oldu: /usr/bin/vi -> /etc/alternatives/vi -> /usr/bin/vim.tiny. İkincisi hiçbir gerçek vim özelliğine sahip değildir. 'Vim' paketini kurmak (synaptic veya apt-get kullanarak) bu bağlantı noktasını gösterdi /usr/bin/vim.basicve bu sorunu çözdü.


-1

Ay Mantarı çözümünde bir hata var. İşte düzeltme:

if has("autocmd")
  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  " Also don't do it when the mark is in the first line, that is the default
  " position when opening a file.
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g`\"" |
    \ endif

endif

Neden çözümünüzün doğru olduğuna inanıyorsunuz? Birbirine çok benziyor ama bir satırın başındaki ters eğik çizgiler için. Varsa, komutun bir sonraki satırda devam ettiğini gösteren bir satırın sonunda olmamalı mıdır? Ayrıca, kabul edilen cevap, birlikte yüklenen global bir yapılandırma dosyasında bir bölümün yorumlanmaması hakkında konuşuyor vim. Görünüşe göre bu sorunu çözdü. Hata nerede?
Nephente

Çünkü ilk çözümü kopyalayıp yapıştırabilirsem, bir hatayla karşılaştım. Ve / usr/share/vim/vim74/vimrc_example.vim (başlangıçta ters eğik çizgiler dahil) içeriğimi yayınladım.
Arnaud

1
@ Dosyada önceden sağlanan, ancak yorumlanan satır alanını ayarlayın. "Onları yorumlamak için satırın başındaki karakteri silmeniz yeterlidir . "İlk çözümü kopyala / yapıştır" uygulamasına gerek yoktur.
ADTC
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.