1

プログラムによって消費されるデータファイルを管理するために vim を使用しています。データファイルの形式は次のとおりです。

<Header line 1>
<Header line 2>
<Header line 3>
<Data line 1>
<Data line 2>
...
<Data line N>

私が変更できないこの形式では、データ値はファイルの 4 行目まで開始されません。ただし、プログラムからの出力は数値でデータ値を参照するため、ファイルをすばやく検索して正しい行を見つけるのは困難です。vim 7.3+ の:set relativenumber( :set rnu) オプションを試してみましたが、相対行番号の計算に使用されるベースラインを継続的に更新するように設計されています。

ベースラインを 3 行目に修正して、4、5、6 行目が 1、2、3 行目に表示されるようにする方法はないかと考えています (プログラムの出力と一致します)。どんな助けでも大歓迎です!

更新:私がやったのは、このオプションをソースコードに手動で追加することでした。必要な変更はほとんどありませんでした。すべてのコードを:set relativenumber新しいオプションという名前にコピーし:set fixednumber、行が変更されたときに行番号を自動的に更新するセクションを無効にするだけでした (このセクションは vim ソース ファイル move.c にあります)。現在、相互に排他的な 3 つのモードがあります。

:set number -- normal line numbers  
:set relativenumber -- automatically updating relative numbers  
:set fixednumber -- relative line numbers that are fixed against the currently selected row when the option was set
4

2 に答える 2

2

いいえ。0inrelativenumberは常にカーソルがある行であり、1innumberは常に1バッファー/ファイルの行です。

ただし、行のみを含む新しいウィンドウを開いて、そこで作業することはでき4ます。N

または、各「 n+3行目にジャンプ」にaを追加します...

このマッピングでは:

nnoremap <F9> :3+

<F9>を押して、行番号を入力して を押すだけです<Enter>

于 2012-11-02T20:42:49.107 に答える
0

Vim はテキスト ファイルをそのまま編集することを目的としているため、必要に応じて変更する必要があります。

G次のように、データ ファイルのバッファでコマンドを再定義できます。

:nnoremap <buffer> G :<C-u>execute (v:count ? v:count + 3 : line('$'))<CR>

ただし、数値列はまだオフになっています。これを修正するには、バッファーがロードされるときに最初の 3 つのヘッダー行を削除し (おそらくバッファー ローカル変数に格納します)、バッファーを保存する前に簡単に再挿入する必要があります。これは autocmds で実現できますが、正しく行うのは少し難しいです。

もう 1 つの方法は、NarrowRegionのようなプラグインを使用することです。これは、選択した範囲をスクラッチ バッファーで開き、保存時に内容を同期します。

于 2012-11-02T20:46:18.283 に答える