Vi & Vim

テキストエディタのviおよびVimファミリを使用している人のためのQ&A

1
選択時にmatchit.vimで定義された一致する「%」名(if / end、for / endなど)を強調表示するにはどうすればよいですか?
現在、私のVimは一致する括弧、角括弧、引用符などをシアンの背景と白の前景で強調表示しています-でカーソルをこれらの間で移動できます%。matchit.vimのおかげで%、if / end、for / endなどを切り替えることもできます。ただし、これらは選択時に強調表示されません。 括弧で自動的に行われるように、選択時にこれらの一致するペアを自動的に強調表示するにはどうすればよいですか? さらに、これらのペアに使用されている背景色をどのように変更でき:highlightますか? 前もって感謝します。 以下の@Tommy Aの回答を更新して、不十分に指定されたmatchit.vimグループや、%オペレーターがカーソルを元の位置に戻さないその他の状況を説明しました。「while」ループの違いを確認してください。このスレッドを読む人は、このバージョンを使用して、無限ループを回避することをお勧めします。 function! s:get_match_lines(line) abort " Loop until `%` returns the original line number; abort if " (1) the % operator keeps us on the same line, or " (2) the % operator doesn't return us to the same line after some …

1
ビジュアルブロック挿入新しい行
私はビジュアルブロックモードで多くの作業を行っています。これは、多くの行にわたる迅速な変更に非常に役立ちます。 しかし、私が苦労しているのは、次のように改行を挿入することです。 選択は次のように示され[]ます: Some [t]ext Some [t]ext Some [t]ext Some [t]ext Some [t]ext を押すIと、前に挿入するテキストを追加できますt。 Some other text Some [t]ext Some [t]ext Some [t]ext Some [t]ext を押す<Esc>と、次のようになります。 Some other text Some other text Some other text Some other text Some other text しかし<CR>、追加したいテキストの代わりにを押すと、必要に応じて改行が挿入されますが、他の行には挿入されません。結果は次のとおりです。 Some text Some text Some text Some text …

3
Vim、ctags、オーバーロード
複数の定義がある場合に、vimを適切な一致する定義に自動的にジャンプさせる方法はありますか?私たちのC ++コードは関数のオーバーロードを多用しており、vimによるctagsの処理は準備ができていないようです。 例えば、 void abc(int a, int b) { } void abc(int a, int b, int c) { } 不思議なことにctrl]、 abc(1,2,3); 2番目の正しい定義ではなく、最初の定義を取ります。また、g]オプションのプロンプトも表示されますが、それは私が探しているものではありません。 ありがとう

2
コマンドラインのオプション値の自動補完
私がこれを試みた回数を数えることはできません: :set foldmethod=syn^I オプション値では補完が機能しないようです! オプションが複雑な文字列であり、補完が意味をなさない場合があります。(例'comments') しかし、一般的なユースケースにワイルドチャー補完を提供するための取り組みはありましたか? そうでない場合、上記の例をどのように機能させることができますか?(私が文字列の1つに完了したいと仮定します['manual', 'indent', 'expr', 'marker', 'syntax']。)

1
Vimファイル名/パスの補完
ctrl + x、ctrl + f(compl-filename)を使用して現在のディレクトリからファイル名/パスを完成できることを知っています。これは、変更が現在のディレクトリをアクティブバッファーのディレクトリに更新するset autochdirとの組み合わせでうまく機能します。 しかし、airblade/vim-rooter現在のディレクトリを「プロジェクト」フォルダにするためにを使い始めました。現在、ファイル名の補完は常にプロジェクトフォルダから始まります。 質問:現在のディレクトリではなく、アクティブなバッファのディレクトリをファイル名の補完に使用する方法はありますか?それとも他の回避策ですか? Stackoverflowでも質問


3
検索でスラッシュをエスケープし、長い文字列を置き換える代替手段
文字列内のすべての特殊文字をエスケープする必要がある以外に、文字列のvim検索と置換に代替手段はありますか? たとえば、次の文字列を照合して何かに置き換えたい場合 [ERROR] Login unsucessful それから私はしなければなりません :%s/\[ERROR\]\ Login\ unsucessful/something/g そして、多くの特殊文字を含む複雑な文字列の場合、それはより醜く、苦痛になります 私は何かしたいです :%s/"[ERROR] Login unsucessful"/something/g すべての脱出を回避します。このような機能はありますか?

2
Vimのデフォルトの「パス」オプションは冗長ですか?
Vimのヘルプドキュメントから(参照:):help 'path': 'path'文字列(UNIXのデフォルト: " .,/usr/include,,") -現在のファイルのディレクトリを基準にして検索するには、次を使用します。 :set path=. -現在のディレクトリを検索するには、2つのカンマの間に空の文字列を使用します。 :set path=,, と思われる.と,,「パス」オプションには差がありません。どちらも現在のディレクトリを意味します。 なぜ両方.を,,パスオプションに入れる必要があるのか​​理解できません。違いは何である:set path=.とは:set path=,,?
10 path 

1
YouCompleteMeが関数パラメーターを完成しないのはなぜですか?
YouCompleteMeをC ++のセマンティック補完で使用したいのですが、何時間も試しても期待どおりに機能しない理由がわかりません。 すべてが機能しているようですが、関数パラメーターを完成できません。 Archlinux(OpenboxのGnomeターミナル)でVimを実行しています: Linux Arch-PC 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 x86_64 GNU/Linux 指示に従ってYCMをインストールしました(install.pyスクリプトとclangサポート付き)。AUR YCMパッケージでも試してみましたが、同じ問題が発生しました。 YcmDebugInfo: Printing YouCompleteMe debug information... -- Server has Clang support compiled in: True -- Clang version: clang version 3.7.0 (tags/RELEASE_370/final) -- Flags for /home/arthur/vimtest/main.cpp loaded from /home/arthur/vimtest/.ycm _extra_conf.py: -- ['-x', …

1
gqを一時的にハイフン(-)を通常の単語と見なして、同じ段落の次の行をインデントしないようにする方法
smartindentとautoindentオプションを無効にした後、JavaScriptファイルでこれを試しましたtextwidth = 80が、それでも同じです。またtextwidth、80文字を超える長さの単語を一緒に挿入するオプションがあるため、自動的に発生します。 何が起こるのですか: /** * - a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l * m n o p …

3
exコマンド出力でgrepする方法は?
exコマンド出力でパターンを検索するにはどうすればよいですか?たとえば、:scriptnamesコマンドの出力でファイル名パターンを検索するにはどうすればよいですか?すべての種類のヘルプではgrepとvimgrepだけあり{file}、検索を実行する場所として。
10 vimscript 

1
ローカルvimrcに構文強調表示ルールを追加するにはどうすればよいですか?
FedoraとWin7の両方にgvimをインストールしました。Fedoraのvimとgvimはどちらもcコードの関数名を強調表示していませんが、win7のgvimは強調表示しています。 win7ではvim73/syntax/c.vim、最後に追加の行があることがわかりました。 syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2 syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1 hi cFunction gui=NONE guifg=#B5A1FF これらの行をc.vimFedoraのに追加すると、gvimは関数名も強調表示できます。 移植性を維持するため.vimrcに、関数名を強調表示するように変更するだけです。ただし、これらの行をに追加した後.vimrc、機能しませんでした。 それで、誰かが私を助けることができますか?私は検索を行いましたが、vimで関数名を強調表示するための多くの解決策があります。しかし、私はこれらのラインをで機能させる方法に興味があります.vimrc。どうもありがとう!


1
複数行で置き換えるには?
単語を複数行に挿入したいのですが、次のようなコマンドはありますか :[2,3,5,7,11]s/^/word\ /g word2行目、3行目、5行目、7行目、11行目の最初に挿入するのはどれですか。 ここでは、複数の線が連続していません。

1
検索結果を強調表示して印刷するには
vimでパターンを検索すると、通常、一致が強調表示されます。ただし、印刷するとハイライトが消えます。私は両方を試してみました:hardcopy > my_file.pdfと:TOhtml。どちらもハイライトを保持しません。 一致したパターンが強調表示されたドキュメントをPDFファイルに出力する方法はありますか? Windows 7マシンでGVim 7.4を使用しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.