Vi & Vim

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

1
matchit.vimの[%、]%、a%は何をしますか?
matchitの%/ g%は使用するのに十分単純ですが、他のマッピングを理解するのに苦労しています。これは潜在的に有用に聞こえますが、理解できる方法で機能していないようです。 ]% Go to [count] next unmatched group, as specified by |b:match_words|. Similar to |]}|. 私は、これは多分私がにジャンプできるようにすることを期待するendif、endfunction(などが内蔵されたVIM ftpluginを使用して、次vimscriptの例を取り、b:match_words設定することが表示されます。) function! SuperTab() let l:part = strpart(getline('.'),col('.')-2,1) if (l:part=~'^\W\?$') return "\<Tab>" else return "\<C-n>" endif endfunction [%ほとんどの場合、にジャンプしfunction!、時々(カーソル位置に応じて一貫性のない)がにジャンプし、s ifを完全に無視し(ます。 sに]%ジャンプし)、それ以外は何もしません。 この例とva%同じように動作し[%、何も選択しません。これは正常な動作ですか?これらのマッピングが意味を持ついくつかの例はありますか?

4
大きなマルチファイルプロジェクトを編集するときに使用するワークフロー
最近、仕事の多くをIntelliJからvimにシフトしています。少数のプラグインと設定の微調整で、IDEを見逃すことはありません。 私が見落としていることの1つは、ソースファイルの大きなディレクトリツリーを簡単に移動できることです。 39のソースファイルを含む中規模のプロジェクトに取り組んでいます。少数のディレクトリに分割します。 IntelliJは(私の写真ではなく)のようにプロジェクトディレクトリを表示します。IDEに慣れていない場合は、ファイルの1つをクリックして、メインの編集ウィンドウまたは分割で開くことができます。 現在私はたくさんのTmuxペインを開いていますが、それはペインが小さくなりすぎる前に2つまたは3つのファイルに対してのみ有効です。 Tmuxサイドバーは機能を視覚的に複製しますが、編集するにはファイル名とパスを手動で入力する必要があります。 Vimはネイティブ:Exで:Sex動作しますが、(私が知る限り)別の分割でファイルを開くためにそれらを使用する方法はありません。私はそれを開いて、それを使用して既存のバッファ/スプリット内のファイルを開くことができるようにしたいと考えています。

1
Vim 8パッケージ、デフォルトパッケージを上書きするにはどうすればよいですか?
Dr. Chipnetrwは、メインのVimディストリビューションに含まれているファイルよりも新しく、頻繁に更新されるため、彼のホームページからインストールしました。 Vim 8以前は、を開いて.vbaを実行することにより、常にVimballのインストール方法を訴えていました:source %。しかし、Vim 8がパッケージメカニズムを追加したので、それを使用することにしました。私のパッケージは次の場所にあります: ~/.vim/pack/packages/start/ ~/.vim/pack/packages/opt/ NETRWをパッケージとしてインストールするには、次のようにしました。 cd ~/.vim/pack/packages/start/ wget http://www.drchip.org/astronaut/vim/vbafiles/netrw.vba.gz mkdir netrw.vim gunzip netrw.vba.gz vim netrw.vba :UseVimball ~/.vim/pack/packages/start/netrw.vim そして、それは正しくインストールされました。しかし、ファイルを編集してnetrwコマンドを使用するとき、たとえば、:Lexploreどちらnetrwが使用されているかわかりません。私が行った場合: vim foo :scriptnames 1: /etc/vimrc 2: /usr/share/vim/vimfiles/archlinux.vim 3: ~/.vim/vimrc (...) 20: /usr/share/vim/vim80/plugin/netrwPlugin.vim 21: /usr/share/vim/vim80/plugin/rrhelper.vim 22: /usr/share/vim/vim80/plugin/spellfile.vim 23: /usr/share/vim/vim80/plugin/tarPlugin.vim 24: /usr/share/vim/vim80/plugin/tohtml.vim 25: /usr/share/vim/vim80/plugin/vimballPlugin.vim 26: /usr/share/vim/vim80/plugin/zipPlugin.vim 27: ~/.vim/pack/packages/start/csv.vim/plugin/csv.vim 28: ~/.vim/pack/packages/start/csv.vim/ftdetect/csv.vim …
7 packages 

1
特定のリマップにタイムアウトを設定しない方法を教えてください。
この問題は、再マッピングされた巨大な構成を使用する問題から発生するため、少なくとも1つのキーを押すコマンドでは、bépoレイアウトは通常モードのqwertyと実質的に同じです。 ビジュアル選択モードを使用してテキストを選択し、iとして構成されているを押すとnoremap i d、テキストはすぐに削除されることが予想されます。ただし、すぐにトリガーされるのではなく、2番目のキーの可能性を待機しています。 timeoutlenゼロに設定すると、このコンテキストで期待される結果が得られますが、このようなコマンドは、動作しない,,ように構成されてnoremap ,, ggいます。 それで、1つのコマンドに固有のタイムアウトを設定したり、アクティブな選択を使用したビジュアル選択モードのような特定のコンテキストでタイムアウトを設定したりできますか? おそらくtimeoutlenゼロになっているとnoremap ,, gg、役に立たなくなるかもしれません。そのため、このマッピングを削除するだけで、期待した結果が得られる可能性があります。


1
vim 8.0ファイルエクスプローラーは特定の場所のみを許可します
私はWindows 7システムでVim 8.0を実行していますが、gvim(で実行するのではなくウィンドウで実行するものcmd)を開くたびにこの問題:pwdが発生しc:\users\"user"ます。デフォルトのパスはです。:Exploreコマンドを使用すると、そこにあるすべてのファイルを表示するファイルエクスプローラーが表示されますが、ファイルパスまでしか上がれc:\usersません。それだけです。それ以上のことはできません。 それ以上に、:cdコマンドを使用して別のドライブ(d:)に移動すると、ディレクトリは正常に変更され、を使用すると表示されます:pwd。しかし、を使用すると:Explore、何も表示されず、代わりに、最初のファイルにある同じテキストを含む同じファイルの分割画面が表示されます。 さらに、asdasd.txtファイルを作成d:\してVimで開いてを使用すると:Explore、何も実行されず、プログラムがそのディレクトリへのアクセスを探しているかのように、コマンドモードで使用していた同じテキスト行に戻りますまたはそのような理由でコマンドをキャンセルします。 また、この前にVim 7.4を使用しましたが、上記のコマンドは期待どおりに機能しました。問題が何であるか考えていますか?特別な設定は必要ですか?

1
Quickfixウィンドウが開いた後にカーソルラインとカーソル列を有効にする
パフォーマンスのため、Vim cursorlineとを無効にしcursorcolumnます。ただし、Quickfixウィンドウをジャンプする場合、ファイル内でカーソルを見つけるのは困難です。したがって、ウィンドウを開いた後、(なんらかのアクションによって)自動的に有効にcursorlineしcursorcolumnますQuickfix。 今私はAutocmdこのようなものを使った解決策を持っています: autocmd BufferEnter quickfix :bufdo set cursorline cursorcolumn これは適切な解決策ですか?もっと良いアイデアは? どうもありがとう!

2
ウィンドウのタブではなく、タブのウィンドウを開くことはできますか?
簡単に言えば、ウィンドウをタブで開くのではなく、ウィンドウでタブを開くことは可能ですか?。このような: これの代わりに: 質問に関連するいくつかの背景: 上記の最初のスクリーンショットのような、タブがウィンドウ内にあるようなインターフェイスに慣れています。 最初はコンソールアプリの機能を使用してVimでこれを実現できました。なぜなら、私はVimに非常に慣れていないため、ウィンドウを操作するためのコマンドをさらに覚えたくなかったからです。しかし、このアプローチにはいくつかの不便があります。 レジスターの共有なし .viminfoファイルは、VIMのインスタンスごとに別々に開放され、そして(編集者の各インスタンスは上書きされるため、それが存在したVIMのインスタンスは、最初に閉じられた場合、したがって、いくつかの重要な情報が失われる可能.viminfoファイル)。 他の誰かがこの問題に直面する可能性がある場合に備えて、これらの問題のそれぞれについていくつかの回避策を管理しました。 端末のウィンドウ間でレジスタを共有するために、xclipアプリケーションをインストールし、次のような元のコマンドでレジスタをコピーしました。call system('xclip', @") .viminfo書き換えの問題については、Vimインスタンスを閉じる順序に注意を払います。 しかし、先日私はこれに飽きて、Vimでウィンドウを試すことにしました。最初に見つけたのは、タブがウィンドウの「上」にあることで、個人的には好ましくありません。 これについていくつかのVimのドキュメントを調べましたが、ウィンドウでタブを開くことができないようです。どのようにしてそれが可能であるかを説明するか、それが不可能であると断言することにより、誰かがこれに答えることができますか?



1
ファイルが見つからない場合、CTRL-Pが非常に遅い
ファイル名のスペルを間違えることがあります。それで、ファイルが呼び出されてThisIsAFileName入力を開始したとしますThisS...。ファイル名のスペルを間違えた(ヒットがまったくない)と、CTRL-Pは非常に遅くなります。次の各文字を5秒ごとに約1文字の速度で表示します。誤って6文字余分に入力した場合、CTRL-Pでこれらの文字の表示が完了するのを30分待ってから、元に戻すことができます。 これは定期的に発生することですか?これを修正する方法はありますか?

1
Pythonクラス名の強調表示を変更するにはどうすればよいですか?
MyClassvimでPythonクラス名を強調表示する構文を定義するにはどうすればよいですか? class MyClass(object): ...... Vimはすでにクラス名を強調表示しています。ただし、関数名で同じように強調表示されているようです。2つのカテゴリを強調するより良い方法がありますか? それは正しい方法syn match ...ですか?デフォルトでsyntax/python.vim、私はこれを見つけました: syn match pythonFunction "\h\w*" display contained 私は試しましたが、私のsyn定義は間違っているはずです、それは機能しません。 syn match pythonClassName "^class \(*\):" display contained call HI('pythonClassName', 124, '', 'bold', 'bold') HI()は自己定義関数であり、pythonStatement正常に変更するために使用しました。 実際のところ、それが本当に何をしているのかはわかりません。それはただの試みです。誰かが私にいくつかのヒントをくれますか?ありがとう!

1
エディター内でGit追跡ファイルを開く
私はGitによって追跡されたすべての変更されたファイルを開くVimコマンドを作成しようとしています。 次のコマンドは、変更されたファイルが1つしかない場合に機能します(現在の作業ディレクトリがgitリポジトリでない場合は失敗します)。 たとえば、外部コマンドの結果をループして複数の行を生成する方法に関するポインタはありますか? command Git execute ":e `git diff --name-only`"
7 git 


1
削除されたバッファを再度開かないようにするための代替ファイルの動作の改善?
evil-modeの約束に惹かれ、Emacsで月光を浴びてきました。毛深いロストエンドと驚くほどスマートな機能が混在するワイルドな世界です。私が本当に気に入っている機能の1つは、というコマンドですbury-buffer。これは、現在のバッファーをバッファーリストの一番下に配置し、その場所に以前アクティブだったバッファーを表示します。バッファを埋めることで、other-buffer(Vim's alternate-fileonのようにCtrl-^)バッファの候補が最も少なくなります。 だから、私は、バッファAの間で前後に跳ねるかもしれないと私はBにいながら、私はバッファC. Iのチェック何かをしたい、私はCを埋めるか、と私はBにバックを入れています、そして、Bをバッファに私の代替ファイルとして。バッファCを埋め込むのではなく削除した場合も同様です。どちらのアクションでも、A / Bワークフローに戻ります。 Vimで同じことをAとBで交互に行うと、BからCを開くと、バッファーリストにCがアクティブ(%)で、Bが代替(#)として表示されます。Cを削除すると、VimはBに戻りますが、Cはバッファーリストに表示されなくなっても、代替ファイルのままです。をCtrl-^押すと、Aに戻るのではなく、Cが再開されます。 Vimを構成して、代替ファイルの動作で、削除されたバッファーを復活させる代わりに、最近使用されたオープンバッファーを代替としてマークする方法はありますか?代替ファイルの概念を操作する方法はありますか?
7 buffers 

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