vi komut satırı, satır ve sütuna git


17

emacsVe vi( vim) kullanımını uzun zamandır karıştırıyorum. Her birinin avantajı vardır. İşlem gibi bir derleme hata çıktısını ayrıştırmak ve bir satır ve sütun numarası almak ama sadece emacsdoğrudan bir satır ve sütuna gitmek için kullanabilirsiniz :

emacs +15:25 myfile.xml

ile visadece (erkek sayfasına göre) hat numarasına sahip

vi +15 myfile.xml

vi +/pattern myfile.xmlAsla çalışmak zorunda kaldım bir örüntü ( ) üzerine konum imleci gitmek için bir seçenek var. Ancak bu bana yardımcı olmaz çünkü desen her zaman dosyadaki ilk olay değildir.

Nasıl başlayabilirim viki dosyamın 15. satırındaki 25. sütuna gider? -cSeçenek ile bir şey yapabilir miyim ?


3
Eğer vim etiketlenmiş olduğundan, kabul var quickfixdoldurur, hataları ile (gezindiğini listesini vim içinden derleyici çalışır hata çıktı ayrıştırır sistemi :cp, :cn, :clkomutların) ve ilk birinde imleci konumlandırır?
Random832

Vi içerisinde bir dosya açar ve :1515 numaralı satıra
kod ninja

Yanıtlar:


17

Kullanabilirsiniz:

vi '+normal 15G25|'  myfile.xml

2
açıklama: vi'daki çoğu komutun (yani çoğu harf), varsayılan davranışını değiştirmek veya tekrar etmek (veya belirli bir aralığa uygulamak) için bir sayı (veya aralık) gelebilir. Vi içinde, komut modunda, 15Gsatır 15'e ve 25|sütun 25'e gitmek için yapabilirsiniz. Christa da komut satırından nasıl yapılacağını gösterir.
Olivier Dulac

7

İle dosya satırı eklentisi , sadece dosya adına hattı ve sütun ekleyebilirsiniz, hem gibi komutları ile Vim ve içini çağrılırken :edit:

vim myfile.xml:15:25

Bunun var olduğunu bilmek güzel, ama sanırım fazladan eklenti gerektirmeyen bir cevap kullanacağım
Dominique

@Dominique vim myfile.xml +15Eklenti olmadan satır için de yapabilirsiniz , ancak bildiğim kadarıyla sütun için değil
Izkata

5

Sadece eğlence için -c 'normal 14j24l'15 karakter 25


4

-cSeçenek hakkında bilmiyorum , ancak şunları yapabilmelisiniz:

vi '+cal cursor(15,25)' myfile.xml

(parantez nedeniyle alıntı yaptığınızdan emin olun ())


cursor()sütun için bayt dizini kullanır, ancak genellikle bir karakter sayısıdır.
Ingo Karkat

@IngoKarkat Bu gerçekten önemli mi? Metin UTF-8'dir.
Dominique

2
Birden fazla bayt tarafından temsil edilen ASCII olmayan karakterler için önemlidir. Ayrıca, bir Sekme ve kontrol karakterleri genellikle birden fazla görüntüleme sütununu işgal eder.
Ingo Karkat

2

Kayda değer:

-c command 

Başlangıçta verilen ex komutunu çalıştırın. Vi için yalnızca bir -c seçeneğine izin verilir ; Vim 10'a kadar kabul eder. Bu seçeneğin eski bir biçimi olan +commandhala desteklenmektedir.

+commandAynı tek sahiptir ex commandkullanıldığında sınırlama vi.

Ayrıca +/pattern, bir komutla sınırlıdır vi.

( vim ve eski editörden alınmıştır )


1

Aşağıdaki kodu vimrc'nize ekleyebilirsiniz. Dosyanıza geri döndüğünüzde, otomatik olarak eski konumuna geri gelin:

if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
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.