Dalam vim, bagaimana cara mendapatkan file untuk dibuka pada nomor baris yang sama dengan yang saya tutup pada waktu terakhir?

141

Saya ingin mengkonfigurasi vim untuk membuka file di tempat yang sama dengan yang saya tinggalkan.


sumber
: '"apostrof diikuti oleh tanda kutip ganda mengarahkan Anda untuk mengubah baris terakhir
Dhiren Hamal

Jawaban:

195

Dari /etc/vim/vimrcfile Ubuntu , contoh ini dikomentari:

" 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

Jika ini tidak berhasil, masalah umum adalah tidak memiliki kepemilikan ~/.viminfofile Anda . Jika demikian, jalankan:

sudo chown user:group ~/.viminfo

di mana pengguna adalah milik Anda usernamedan groupseringkali sama dengan nama pengguna Anda.

moinudin
sumber
9
Autocmd langsung keluar dari vim doc. Lihat: bantu lompatan posisi terakhir
user55400
19
Jika kutipan tunggal dalam garis kedua dari belakang diubah menjadi backtick, itu akan melompat ke posisi kursor yang sebenarnya, bukan hanya awal dari baris itu:\| exe "normal! g`\"" | endif
u2622
4
Bagian itu chownmemperbaiki masalah bagi saya. Hormat!
slowpoison
2
Akhirnya seseorang menunjukkan bahwa .viminfo saya dimiliki oleh root untuk beberapa alasan! Ini perlu di 100 dokumentasi lain yang saya baca.
Jack
2
Hanya ingin memberi +1 chown user ~/.viminfopenambahan. Saya sudah mencoba mencari tahu ini selama satu jam sekarang dan Anda baru saja menyelamatkan hari saya.
Christopher Reid
48

Jika Anda tidak keberatan bertrading otomatis untuk kesederhanaan, cukup tekan tombol '"(apostrof, diikuti dengan tanda kutip ganda) pada pembukaan file, Anda akan melompat ke tempat Anda sebelumnya. Ini pada dasarnya adalah apa yang dilakukan jawaban @ marcog.

sykora
sumber
24
  :h views-sessions

Anda dapat menempatkan ini di .vimrc Anda :

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview

tampilan akan ditempatkan di $ HOME / .vim / view. Anda mungkin perlu membuat direktori ini.

Oli
sumber
Saya suka jawaban ini karena yang lain merujuk ke file / etc / vim / yang tidak ada di Mac saya.
MarkHu
15

Anda dapat memulai vim tanpa menentukan nama file menggunakan

vim 

Selanjutnya tekan CTRL + O dua kali untuk pindah ke lokasi terakhir dalam file apa pun yang Anda kerjakan.

MatAff
sumber
Jika Anda telah menginstal NERDTree, menekan Co dua kali dapat membuka NERDTree di buffer saat ini. Dalam kasus saya, saya kadang-kadang perlu menekan Co hingga lima kali, tetapi akhirnya saya mendapatkan efek yang dijelaskan oleh @MatAff.
ashrasmun
Menekan Ctrl-csekali sudah cukup bagi saya. Selain itu, menekan Ctrl-clebih banyak akan membawa saya lebih jauh ke belakang dalam posisi kursor histroy (bahkan membuka file yang belum dibuka yang relevan). Saya menggunakan Neovim 0.4.2, tetapi pemahaman saya adalah bahwa itu berlaku vimjuga.
T_T
7

Jika Anda mengaktifkan viminfo, sesederhana itu `0 untuk pergi ke posisi file yang terakhir diedit. Anda akan melihat bahwa ini hanya perintah 'pergi untuk menandai';

Memang, Anda nanti dapat melakukan '3 untuk pergi ke lokasi ketiga yang diedit sebelumnya (mungkin dalam file lain), dan kemudian kembali ke yang terakhir dengan `0 lagi

Lihatlah

 :marks

untuk melihat lokasi yang diingat. Perhatikan juga bahwa viminfo menyimpan semua jenis barang lainnya (seperti isi register, tanda per file, perintah, dan riwayat pencarian). Kebanyakan orang mengaktifkan ini karena alasan yang jelas

lihat
sumber
`0 tidak berfungsi untuk saya di vim versi 7.4.1689 di mac. Tapi '0 berhasil. Apakah ini salah ketik dalam jawabannya?
alamoot
@alamoot tidak, lihat vimdoc motion.txt - Periksa karakter apa yang `sebenarnya dihasilkan kunci Anda , atau lakukan:verbose map `
lihat
kamu benar. Menurut vimdoc keduanya benar!
alamoot
6

Ada sebuah plugin bernama vim-lastplace (saya adalah pembuatnya) yang akan membuka file Anda di mana Anda tinggalkan. Ini meningkatkan saran di atas dengan mengabaikan pesan komit karena Anda biasanya mengedit pesan baru dan ingin memulai di bagian atas file pesan komit.

Greg Dietsche
sumber
yang dapat Anda lakukan tanpa plugin adalah yang terbaik. bertujuan untuk .vimrc: semakin kecil kode semakin ringan dan lebih cepat
nilon
1

Terkadang ~/.viminfomenjadi hanya-baca atau pengguna Anda tidak memiliki akses ke file. Itu juga bisa menjadi alasan bahwa vim tidak menyimpan posisi kursor Anda ketika Anda menutup file Anda.

dam0055
sumber