Saya biasanya bekerja dengan 2 jendela, terbagi secara vertikal.
Masalah yang ingin saya pecahkan, adalah: dengan mudah melompat-lompat dari header file implementasi <->
Saya sedang menyelidiki, tanpa hasil, 2 cara untuk melakukan ini:
- Buka file alternatif di jendela saat ini : Ada banyak cara untuk melakukan ini, namun, saya tidak dapat menemukan cara yang mengingat di mana saya berada di file sebelumnya (yaitu melompat ke header, melompat kembali, tetapi tidak ke tempat yang sama dengan saya sebelumnya) ).
- Buka file alternatif di jendela lain : Ini didefinisikan dengan baik, karena saya hanya pernah bekerja dengan 2 jendela, namun saya tidak memiliki pengetahuan vim untuk melakukan ini.
vim-windows
zach
sumber
sumber
:h line()
(solusi umum): "Perintah otomatis ini melompat ke posisi terakhir yang diketahui dalam sebuah file tepat setelah membukanya, jika tanda" "diset:: au BufReadPost * if line (" ' \ "")> 1 && baris ("'\" ") <= baris (" $ ") | exe "normal! g` \" "| endifJawaban:
Ada tiga langkah utama dalam mencapai apa yang Anda tanyakan:
Untuk menemukan nama file alternatif, Anda ingin memecah nama file saat ini menjadi "root" dan "ekstensi." Cara sederhana untuk melakukan ini adalah:
Jika Anda tahu Anda hanya pernah beralih antara
.h
dan.cpp
file, Anda dapat mengubah ekstensi dari satu ke yang lain dengan mudah:Atau, buat kamus yang memetakan ekstensi yang dikenal ke ekstensi alternatif yang berpotensi valid. Atau gunakan
globpath()
untuk mendapatkan semua alternatif yang memungkinkan untuk file saat ini:dan pilih yang pertama, atau apa pun. Saya lebih suka
globpath
pendekatannya, dengan beberapa kecerdasan ekstra yang akan saya jelaskan nanti. Setelah Anda memilih ekstensi target, bentuk jalur target lengkap:Sekarang Anda dapat membuka file alternatif di jendela saat ini:
Atau gunakan
winnr()
untuk mendapatkan nomor "jendela lain" (winnr("#")
adalah jendela yang<C-W>p
akan melompat ke, atau Anda dapat membuat kode-keras jika Anda tahu itu akan selalu sama untuk pengaturan Anda) dan melakukan sesuatu seperti:Ini memberi Anda solusi yang sangat mendasar untuk membuka file alternatif. Ada beberapa kekurangan dengan pendekatan di atas, karena saya menulisnya dengan terus terang dan itu agak tidak jelas. Saya telah menulis sebuah plugin yang melakukan penggantian file alternatif "seperti yang saya inginkan," (bersepeda melalui semua
globpath()
hasil yang tersedia ). Ini mengatasi beberapa masalah dengan kesederhanaan di atas, Anda dapat memeriksa implementasinya jika Anda tertarik untuk mengeksplorasi lebih lanjut.Akhirnya, titik "kembalikan posisi kursor". Saya menyimpannya untuk yang terakhir karena itu ortogonal ke hal switching alternatif (plugin saya tidak menanganinya misalnya), tetapi Anda bisa memasukkannya ke dalam fungsi Anda jika Anda ingin menggulirkannya sendiri.
:help line()
memiliki perintah otomatis yang berguna untuk mengembalikan posisi kursor ke posisi saat file dibuka terakhir:Saya hanya menempatkan itu, atau sesuatu yang sangat mirip, di saya
.vimrc
karena saya lebih suka perilaku sepanjang waktu. Anda dapat dengan mudah menaruh kode di tempat lain.sumber
Anda dapat menggunakan plugin vim-fswitch bersama dengan konfigurasi berikut di
.vimrc
file Anda :Jika Anda mengetik
<Leader>
(yang secara\
default) diikuti olehs
dalam.hpp
atau.h
file, plugin akan memeriksa apakah ada yang cocok.cpp
,.cc
atau.c
ada file:include
dengansrc
di jalur file saat inisrc
folder di atas file saat iniAda lebih banyak opsi yang dapat Anda gunakan agar sesuai dengan proyek Anda lebih baik dalam dokumentasi . Ini akan memakan waktu beberapa menit, tetapi begitu Anda bisa melakukannya dengan benar, Anda harus menyukainya. Saya pribadi merasa sangat fleksibel dan dapat dikembangkan, ditambah lagi berfungsi dengan baik untuk berbagai jenis file (.m, .h, .inl dll ...).
sumber
Di Anda
.vimrc
Ini memungkinkan Anda untuk berpindah antar windows dengan cepat, hanya dengan menggunakan tombol arah Ctrl dan VIM dari baris home. Kehebatan ini, adalah Anda memiliki satu cara umum untuk melompat ke jendela mana pun, termasuk jendela perbaikan cepat.
Untuk beralih dengan cepat antara header dan sumber yang saya gunakan
vim-scripts/a.vim
ditemukan di sini: https://github.com/vim-scripts/a.vim , gunakan:A
perintah untuk beralih.Catatan Samping => Jika Anda menggunakan tmux, Anda dapat menggunakan https://github.com/christoomey/vim-tmux-navigator untuk melompat di antara jendela vim atau nvim dan terminal dengan mulus.
sumber
Saya hanya akan membagikan versi super cepat & kotor saya ...
Siapkan pemetaan saya; alt-o membuka file terkait di jendela yang sama, alt-shift-o terbuka dalam ...
Kemudian saya memiliki fungsi yang mendapat daftar file terkait. Saya bermaksud men-tweak untuk memotong nama file pada titik pertama dan bukan yang terakhir tapi itu masih merupakan latihan bagi pembaca.
Setup .vimrc saya terkadang khusus untuk setiap klien; beberapa memiliki sumber dan termasuk dalam hierarki folder yang terpisah, beberapa memilikinya bersama-sama. Secara default saya menganggap mereka semua dekat tetapi jika saya perlu berburu saya akan memberikan fungsi pengganti seperti ini.
Kemudian saya melihat daftar file untuk menemukan file buffer saat ini dan pergi ke yang berikutnya dalam daftar. Ini tidak sesederhana pasangan .cpp / .h, sering kali saya memiliki hal lain yang perlu dipertimbangkan.
Dan akhirnya dua fungsi yang terbuka di jendela saat ini atau melakukan pemisahan ...
Versi pemisahan saya selalu menempatkan file .cpp dan .c di dalam split di bawah, jika tidak default dibagi (dalam kasus saya di atas).
sumber