viコマンドライン、行と列に移動


17

emacsvivim)の使用を長い間混合しています。それぞれに利点があります。プロセスなどのコンパイルからのエラー出力を解析し、行番号と列番号を取得しますが、行と列emacsに直接移動するためにのみ使用できます:

emacs +15:25 myfile.xml

vi私は(manページによる)行番号を持っています

vi +15 myfile.xml

vi +/pattern myfile.xml一度も動かなかったパターン()にカーソルを移動するオプションがあります。しかし、パターンが常にファイル内で最初に出現するわけではないため、それは私を助けません。

viファイルの15行目の25桁目に移動するにはどうすればよいですか?-cオプションで何かできますか?


3
あなたがVimをタグ付けするので、あなたは考えられていquickfixvimの中から、コンパイラを実行するシステムを、エラー出力を解析し、エラー(とナビゲートのリスト移入し:cp:cn:clコマンド)を、そして最初のものにカーソルを配置?
Random832 14

あなたはviの中でファイルを開いて、入力した場合:15、それはライン15にジャンプします。..・ホープこれはあなたの助け
忍者コード

回答:


17

次を使用できます。

vi '+normal 15G25|'  myfile.xml

2
説明:viのほとんどのコマンド(つまり、ほとんどの文字)の前に数字(または範囲)を付けて、デフォルトの動作を変更したり、繰り返したり(または特定の範囲に適用)することができます。viの内部では、コマンドモードで15G15行目と25|25列目に移動できます。Christaは、同じことをコマンドラインから行う方法を示しています。
オリビエデュラック14

7

、ファイル行のプラグイン、あなたは、単にファイル名に行と列を追加することができ、両方のようなコマンドでVimの内部を呼び出すとき:edit

vim myfile.xml:15:25

このが存在を知っているが、私は余分なプラグインを必要としない答えを使用すると思うことは良い
ドミニク

あなたがすることもでき@Dominique vim myfile.xml +15行用のプラグインなしではなく、私の知る限りとして列
Izkata


4

私は-cオプションについて知りませんが、あなたはできるはずです:

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

(括弧のために引用してください()


cursor()列にバイトインデックスを使用しますが、通常は文字数です。
インゴカルカット14

@IngoKarkatそれは本当に重要ですか?テキストはUTF-8です。
ドミニク14

2
これは、複数バイトで表される非ASCII文字にとって重要です。また、タブと制御文字は通常、複数の表示列を占有します。
インゴカルカット14

2

注目に値する:

-c command 

起動時に指定されたexコマンドを実行します。viには1つの-cオプションのみが許可されます。Vimは最大10を受け入れます。このオプションの古い形式である+command、まだサポートされています。

+command同じ単一有するex command使用時制限vi

+/patternまたして一つのコマンドに限定されていますvi

vimおよびexエディターから取得)


1

次のコードをvimrcに追加できます。ファイルに戻ったときに、vimは自動的に古い位置に戻ります。

if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.