Vi & Vim

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

1
特定の名前または拡張子を持つ「古いファイル」を検索できますか?
oldfilesとbrowse oldfilesコマンドをいつも使用しています。私のリーダーマッピングにアクセスし、ファイルをすばやくスキャンして、 q<number><enter> 特定のファイルへの非常に長いディレクトリパスを入力するのではなく、(特に時々、それがどのディレクトリにあるのか覚えていないことがあります) ただし、欠点は1つだけです。私はvimを頻繁に使用しているため、探しているファイルが数十および数十行下にある場合があるため、検索に非常に長い時間がかかります。oldfiles特定の拡張子のみを表示するためにによって与えられたファイルのリストをフィルタリングできる方法はありますか? たとえば、次のようなコマンド: browse oldfiles *.py これは、.py最近開いたファイルのリストを表示し、番号の入力を求めてから、そのファイルを開きます。 これを行う方法がない場合、同様の機能を持つプラグインはありますか?

1
定義された列の後のコメントに色を付ける方法
私はかつて、このヘルパーがvim列80の行の長さ制限にPEP8ルールを適用するのを助けるために縦線の種類を表示できるようにするためにこれらの資料を与えられました。 " Long lines highlighting. nnoremap <Leader>H :call<SID>LongLineHLToggle()<cr> hi OverLength ctermbg=none cterm=none match OverLength /\%>80v/ fun! s:LongLineHLToggle() if !&diff if !exists('w:longlinehl') let w:longlinehl = matchadd('ErrorMsg', '.\%>80v', 0) echo "Long lines highlighted" else call matchdelete(w:longlinehl) unl w:longlinehl echo "Long lines unhighlighted" endif endif endfunction 実行中: これらすべてを使用して、80番目の列をマークします。 十分な時間と労力が与えられれば、コメントの場合にのみ、vim 72桁目をはるかに超えるテキストをマークするための同様の機能を利用できます。誰かがどこかの時点ですでにコード化していると思います。そのスニペットの場所をすでに知っていますか?

1
なぜ「vimrc」ファイルと呼ばれるのですか?
vimrcの名前はどこから来たのですか?そのrc部分は頭字語ですか?この名前を選ぶ歴史的な理由はありますか?rc構成ファイルを使用する習慣は最初どこから来たのですか? 価値があることについては、これはvimに固有のものではないことを認識しています。我々が持っている理由です.bashrc、.hgrcなど、

1
「<(>)」で一致しているのに、「<(>)」の終了「>」と一致しない一致ペアを作成するにはどうすればよいですか?
私はset matchpairs+=&lt;:&gt;C ++コードで使用していますが、うまく機能します。ただし、次のC ++コードのように、完全に存在しない場合もあります。 #include &lt;type_traits&gt; template&lt;int X&gt; typename std::enable_if&lt;(X&gt;9),int&gt;::type func() { return 5; } int main() { func&lt;10&gt;(); } ここで、カーソルをの&lt;後ろに置くenable_ifと、&gt;in X&gt;9が強調表示されます。もちろん、それはC ++コンパイラでもIDEでもないVimの観点からは理にかなっています。しかし、閉じていない括弧で分割されたペアと一致しないようにする簡単な方法はありますか?&lt;()&gt;つまり、閉じ山括弧を一致させたいのですが、一致させたくあり&lt;(&gt;)ません。

1
コマンドラインから行の範囲を選択する
コマンドラインから一定範囲の行を(視覚的に)選択する必要があります。 たとえば、次のコマンド:?^\s*for?+,/^\s*end/- pは、a forとend(の間にある)の間に含まれるすべての行を出力します。印刷操作を実行する代わりに、これらの行が強調表示されたビジュアルモードに切り替えたいと思います。マニュアルで検索しましたが、そのような元のコマンドは見つかりませんでした。

2
Windowsでの大文字と小文字を区別しないファイル名の扱い
私は最新のvim / gvim(8.0.118)を使用していますが、他のバージョンで過去にこの問題に気づきました。 fizzbuzz.java(gvimの外で)という名前のファイルを作成し、ファイルマネージャーのコンテキストメニューを使用して、Windows 7 PCの職場でgvimの新しいタブで開きました。タブを閉じた後、を使用して:x、自分が作成しFizzBuzz.javaたクラスの名前と一致するようにファイルの名前をに変更する必要があることを発見しました。これは、gvimの外部で行いました。 ただし、gvimの同じインスタンスで再度開くと、ファイルマネージャーのコンテキストメニューを再び使用すると、元のケーシングに戻り、で閉じると:x、そのように保存されるので、ファイルの名前をもう一度変更します。バッファを削除し、メニューのバッファリストを更新した後でないと、gvimでファイル名の新しい大文字と小文字を正しく認識できませんでした。 これはLinux(PCLinuxOS)上のgvim 7.4では発生しません Windowsでgvimを再起動せずにgvimに認識させ、ファイル名の大文字と小文字の変更を保持する簡単な方法はありますか?


1
スペースを含むファイル名補完
名前にスペースが含まれているファイルがたくさんあり、これが問題を引き起こしています。findコマンドのコマンドライン補完を実行しようとして、これらのファイルの1つが表示された場合、Vimはそれを検出しますが、スペースがエスケープされていないため、ロードされません。 例:私はすでにvimにいるので、次のように入力します :find fo&lt;Tab&gt; を完了するためにfoo bar.txt、Vimはそれを見つけて、ファイル名が1つだけであることを想定しているため、エラーをスローします。それが今読んだことの意味 :find foo bar.txt ロードされません。 これを回避する方法はありますか?そしてVimに自動的にスペースをエスケープさせますか? 私はVim 7.3を実行するVimTouchを使用しています 編集:私は最近、Vimがパス名をエスケープすることに気付きましたが、不思議なことにファイル名はエスケープしません。


5
CtrlPがNERDTreeで開かないようにする
私は両方CtrlPとNERDTreeVimで使用します。CtrlP検索機能を使用してファイルを開くと、そのファイルがNERDTreeウィンドウで開かれることがあります(また、NERDウィンドウがアクティブな場合は常に開かれます)。 CtrlPNERDTreeでファイルを開かないようにして、メインウィンドウでファイルを開くようにするにはどうすればよいですか?CtrlPVimでドキュメントを調べてみましたが、方法がわかりませんでした。 これらは、私のすべてのNERDTreeおよびCtrlP関連の構成です.vimrc。 let g:netrw_liststyle = 3 let NERDTreeShowHidden = 1 let g:ctrlp_user_command = ['.git', 'cd %s &amp;&amp; git ls-files -co --exclude-standard'] command E Ex map &lt;C-t&gt; :NERDTreeTabsToggle&lt;CR&gt; nmap &lt;Leader&gt;r :NERDTreeFocus&lt;cr&gt;R&lt;c-w&gt;&lt;c-p&gt;:CtrlPClearCache&lt;cr&gt;

2
通常モードでのみ行番号を設定する
挿入モードでは行番号をあまり使用しないので、オフにします。ただし、通常モードには最適です。 常に使用するのset nu!は面倒です。set nu!通常モードの終了と開始に関連付ける方法はありますか? 上記または他の方法を使用した解決策はありますか?

1
最後のウィンドウ/スプリットがヘルプページであるときにvimがエディターを閉じないようにする
vimで作業しているとき、ヘルプファイルを含む分割が開いていることがよくあります。vimがヘルプウィンドウのみが開いた状態のままになるよう に他のウィンドウを:q閉じると、vimはエディター全体を閉じます。これにより、ヘルプページでの位置が失われます。例:このレイアウトがあるとしましょう tab1 (this is the only tab open) +------------------+-------------+-----------------+ | | | | | |:h usr_26.txt| | | A normal file, | | :h change.txt| | containing code |section 26.2 | | | e.g. |line 47 | line 272 | | | | | | app_db.sql | | | …

1
単一のキーストロークで、異なる選択に対して以前の置換を実行します
次のコマンドを実行しました :'&lt;,'&gt;s/2/digit/g 手動で視覚的に選択された以下のコード: return _.round(this.getTotalAbs(), 2).toFixed(2); そしてそれは意図したように機能しました return _.round(this.getTotalAbs(), digit).toFixed(digit); ここで、ビジュアル選択モードを介して手動で選択した別のコードスニペットに対して、1つのキーストローク(可能な場合)で同じ置換コマンドを繰り返したいと思います。

3
現在のファイル名を別のパスでコマンドラインに渡す方法
%コマンドラインでパス名を使用して特別なシンボルを機能させる方法はありますか?たとえば、私はしたいと思います: :diffsplit Path\to\other\directory\% @:同じ名前のファイルをすばやく比較できるようにするためです。ただし、これはと呼ばれる新しいバッファを開くだけ%です。 もちろん私はできる: :exe 'diffsplit Path\to\other\directory\'.expand('%') しかし、コマンドを入力するときに完全なディレクトリにタブを付けることができないため、これは面倒です。 これを行う他の良い方法はありますか? これは関連する質問ですが、私の状況には正確に対応していません。 編集:明確にするために、さまざまなファイルに対してコマンドを正確に再利用できるようにしたいと思います。そのため、コマンドラインで現在のファイルを単純に自動入力するソリューションは機能しません。同じコマンドが異なるファイル名で機能する必要があります。

1
vimで編集されたマークダウンファイルの結果をプレビューする方法
私はvimを使用して編集していますlatexが、latexは日常的に気軽にメモを取るには少し重すぎるため、代わりにマークダウンを使用することにしました。 それで、\lvコマンド を使用してマークダウン形式のファイルを表示できるようにvimを構成したいと思います 使用していMac OS X 10.11ます。.vimrcファイルを変更するにはどうすればよいですか?

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