vim: bir dosyadaki tüm satırların ilk n harfini gizle


12

Ben vim kullanarak günlük dosyasını analiz ediyorum ve biçim böyle görünüyor

YYYY-MM-DD HH:MM:SS.USEC PID Name LogText

Çoğu zamandan beri tarih ve saati umursamıyorum. Onları gizlemek ve sadece Ad ve LogText sütunlarına odaklanmak istiyorum (Bazı ekran mülklerini kaydetmek için). İlk üç sütun her zaman bir satırdaki ilk 35 harfi işgal eder. Vim'in her satırın ilk 35 harfini göstermemesinin bir yolu var mı?


Vim'de nasıl yaptığınızı bilmiyorum, ancak geçici bir dosya oluşturmanın sakıncası yoksa, çalıştırabilir cut -c36- logfile > logfile_with_first_35_chars_missingve daha sonra inceleyebilirsiniz.
Warwick

Yanıtlar:


7

İlk harfleri nasıl gizleyeceğinizi, kaldırmamanızı veya gözden kaçırmamanızı istediniz - işte bunları nasıl gizleyeceğiniz aşağıda açıklanmıştır:

Gizlemeyi kullanarak vim'deki metni gizle

Sen kullanabilirsiniz eşleştirme ile kombine dizim ve gizlemeye çizgiler içinde aslında eşleşen göstermez karakter özelliği.

Her satırın ilk 25 karakterini gizlemek için:

:syn match Concealed '^.\{25\}' conceal
:set conceallevel=2

Bunun yerine yalnızca bir tarihin noktalaması olan satırları gizlemek için:

:syn match Concealed '^....-..-.. ..:..:..\..... ' conceal

Göstermek için:

:syn clear Concealed
:set conceallevel=0

Normalde şöyle görünür:

YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText

ilk iki komutu yürüttükten sonra şöyle görünecektir:

PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText


Ayrıca bakınız - içeride vim:
help :syn-match
help :syn-conceal
help 'conceallevel'
help 'concealcursor'


(Bu şekilde davranmıyorsa bana bildirin - farkında olmadığım başka bir ayar olabilir ya da böyle - Çalışmasını sağlayacağım.)


1
Güzel çalışıyor, bunun çalışması için vim +conceal(benim olduğunu) seçeneği ile derlenmesi gerektiğini düşünüyorum . Ayrıca set concealcursor=ncimleç satırının genişlemesini önlemek için de iyi .
user881300

Evet, +concealözellik seçeneği birkaç yıl gibi standarttır. Şimdiye kadar daha iyi bilinmediği için üzgünüm. Gerçekten harika ve esnek. Verir sürü yeni seçenekler ...
Volker Siegel

8

Vim'in filtre işlevini kullanın . Çalıştırmak:

:%!cut -b36-

arabellek içeriğini cutkomut aracılığıyla çalıştırmak için , yalnızca bayt 36 ve sonrasında saklamak. %tüm tamponu çalıştırmak ve içeriğini çıktı ile değiştirmek anlamına gelir, daha sonra !filtre komutu, satırın geri kalanı çalıştırılacak program olarak kullanılır. Bu, daha sonra arabelleği üstüne kaydetmezseniz, temel dosyada değişiklik yapmaz.

Orijinal ekransız arabelleği geri almak için :e, gerçek bir dosya tarafından desteklenmesi koşuluyla kullanabilirsiniz .


Sonra %!cat %geri almak için kullanın ? Bu harika çalışıyor ve ben mapbu iki arasında geçiş yapmak için kullanabilirsiniz
user881300

Evet, tamponunuzu destekleyen gerçek bir dosyanız olduğu sürece bu işe yarayacaktır.
Michael Homer

3
@Michael Homer: Bu artık unicode karakterlerle çalışacak.
cuonglm

6

Bence daha çok aradığınız şey yatay kaydırma .

Z yatay kaydırma komut tuşu, ardından sol veya sağ ok tuşuyla hareket etmek için bir yön.

İlk :set nowrapönce satır kaydırmayı devre dışı bırakın. Ardından basın z, 35, 35 boşluk ilerleyin.


Bu günlükleri okurken çok faydalıdır, teşekkürler!
Fabio

Tamam, tek bir sayfa için harika, ama ... İmleç satırın başına atlamaksızın sayfa aşağı veya sayfa yukarı nasıl yapılır?
elysch

@ user2987828 yanıtında nasıl yapılacağını buldum: using:set nosol
Elysch

İmleci gizli olmasını istediğiniz son karakterin üzerine getirin. Sonra yazın ...[Esc] z s
roblogic

2

Komut modunda şunları deneyin:

:%s/^.\{35}//
  • %s/pat/sub/: her pat oluşumunu sub ile değiştir
  • ^.\{35}: satırın ilk 35 karakterini eşleştir

Bu komut her satırın ilk 35 karakterini kaldırır. İçindeki :h regular-expressiondüzenli ifade hakkında daha fazla bilgi için okuyabilirsiniz vim.


1

Tamponları veya dosyaları değiştirmeden hatırlanması kolay bir çözüm var. İmlecinizi Lgörmek istediğiniz dosya bölümünün ilk karakterine ( örneğinize) getirin, sonra yazın

:set nowrap
zs

zsKomut irade kurulum vi böylece ekranın ilk sütununda imleç görüntülenene ile karakteri o. :set nosolYapılandırma dosyalarınızı yazmadığınızdan emin olun .

g$Komut son görünür sütuna imleci hareket edecek.

g0Komut, ilk görünür sütuna L. içeren bir imleci geri hareket edecek

Herhangi bir tuş imleci görünür sütunların dışına veya sağına hareket ettirirse, görünür pencereler kayacaktır.


Ve g0komut imlecinizi görünür olan ilk sütuna
götürür
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.