Vi & Vim

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

1
プラグインの永続的な設定の現在の「ベストプラクティス」は何ですか?
非常に大きなテキストファイルをフィルタリングして役立つ「目次」を生成するプラグイン(Uniteサブモジュール)があります。多くのフィルターを有効/無効にする機能をユーザーに提供したいと思います...そして、その設定が各vimの呼び出しを通じて持続することを望みます。(同時セッション全体の即時更新は必ずしも必要ではありません) これをvimに組み込むためのメカニズムはありますか?または、ユーザーの$ HOMEに「ドットファイル」を作成して管理する必要がありますか?またはこれを処理するための受け入れられた標準的な方法はありますか? 編集:オプションのリストは現在数百エントリの長さであり、現在のインターフェイスは単にリストから削除するために「dを入力してdを入力する」ので、ユーザーにvimrcでグローバル変数を設定させることはできません。

1
Pythonはオートコンプリートをインポートします
Python開発用にvimを構成しようとしています。現在、私はコードの自動補完機能に取り組んでいます。YouCompleteMeプラグインを使用していますが、うまく機能しているようですが、指定されたモジュールをすでにインポートしている場合のみです。たとえば、 import datetime その後 datetime. 利用可能なクラス/モジュール/関数などのリストを取得します。欠けているのは、インポート文を記述するときにモジュールの提案を取得する可能性です。この場合、日時モジュールは取るに足らないように見えるので、例としてDjangoフレームワークを使用します。私はこのようなことを達成したいと思います: from django. django内のすべてのモジュールをリストします、私はそれらの1つを選択します、例えばビュー from django.views. django.views内のすべてのモジュールを一覧表示します。たとえば、genericを選択します from django.views.generic import そして、このモジュールから利用できるクラス、関数、変数のオートコンプリートを用意したいと思います。 from django.views.generic import TemplateView これをどのように達成できるかについての提案はありますか?

2
ソフトラインラップ幅
GVimでテキストを折り返すと、GVimウィンドウの右側で折り返されます。ただし、80桁目で折り返すことをお勧めします。私が見つけた解決策はですが:set columns=80、これはウィンドウを縮小し、一種の閉所恐怖症の感覚を与えます。したがって、ディスク上のファイルを変更したり、GVimウィンドウサイズを変更したりせずに、固定列でテキストを折り返す方法を誰かが知っているかどうか疑問に思いました。画面右側の固定サイズの空白スペースでも機能しますが、私の好みではありません。 それが違いを生む場合:私は主にWindowsマシンでGVim 7.4を使用しています。
7 gvim  wrapping 

1
現在編集されているファイルを基準にしたファイル名補完
現在ではないファイルを直接開いた場合、Vimを使用してファイル名をオートコンプリートすると、現在編集されているファイルではなく、Vimを起動した場所に関連するファイルが表示されます。 例 $ find . nice-file.xml xml/ messy-file.xml ok-file.xml $ vim xml/messy-file.xml 今、私が入力した場合Ctrl+ x、Ctrl+ f、Vimは完全なオプションとして、「素敵な-file.xml」を提供します。現在編集中のファイルと同じディレクトリにあるにもかかわらず、ok-file.xmlは提供されません。 Vimで、編集中のファイルに関連するファイル名を完成させてください。それは可能ですか?

1
zGとzWを永続化する
編集:これを小さなプラグインに変えました。これは私の最初の試みであり、私が何をしているかわからないので、どんな助けでも大歓迎です。:) ここにあります:https://github.com/danielbmarques/vim-dialect ---------- 私が使用し続けたいzgとzwグローバルのvimに単語を追加するspellfileのが、私が使用したいzGとzWに単語を追加するためにspellfile 、私が編集していたファイルに固有。言い換えれば、私は各ファイルに対して永続的でzGありたいと思っzWています。 spellfile変更を設定するzgとzwコマンドとコマンドが変更されますが、必要なのはコマンドzGとzWコマンドのみを変更することです。 だから私はこれをやった: :au BufNewFile,BufRead * let &l:spellfile = expand('%:p:h') . '/.' . \ substitute(expand('%:t'), '\(.*\)\..*', '\1', '') . '.utf-8.add' nnoremap zG :call LocalSpell("zG")<cr> nnoremap zW :call LocalSpell("zW")<cr> nnoremap zuG :call LocalSpell("zuG")<cr> nnoremap zuW :call LocalSpell("zuW")<cr> nnoremap zg :call GlobalSpell("zg")<cr> nnoremap zw :call GlobalSpell("zw")<cr> nnoremap zug …

4
を交換してください。->特定の場所
コードを修正.する->とき、時々私はと取り替える必要があります。 多くの(数百の)ドット(.)があり、変更する必要があるのは少数のドットだけなので、通常、検索と置換は使用できません。 ただし、make changelistを実行しているときに変更が必要なものを見つけました。 繰り返し演算子を使用しても、1つのインスタンスを変更してからドットコマンドで繰り返すと、次のようになるため、まったく機能しません。 structBlah->.memberBlah 次にx、不要なドットを削除するために使用すると、最後の変更が削除されたため、貼り付けとドットが機能しなくなります。 つまり、基本的に問題は繰り返しオペレーターがモーションと編集を繰り返すことですが、ここでは削除と挿入の2つの編集を繰り返す必要があります。 これを行う便利な方法はありますか?私の考えの1つは、次のようなマクロを使用することでした。 xi-><ESC>

2
VimはPythonファイルで正しいインデントを使用しません
Vimでこれまで見たことのないものに遭遇しました。作業を計画しているソフトウェアのソースコードの一部を暫定的に変更しているときに、vimが追加したコード行のスペースが正しく表示されていないことに気付きました。Geditは正しい間隔でコードを表示します。VimのコードをVimウィンドウ内にあるように変更すると、Pythonコードでエラーが発生するため、Geditの間隔が正しいことを知っています。以下の画像を添付しました。追加した行は、「階乗を評価しようとしています」と出力する行です。短い.vimrcファイルも含めました。誰かこれを見たことがありますか?私は何ヶ月もvimを使用していますが、このようなことが起こったことを思い出すことはできません。 Vim(不正解): Gedit(正解): Vimrc:

2
数行ごとに並べ替え
以下をキーに基づいて並べ替えたい case IndexError: PyErr_SetString(PyExc_IndexError, exc.str.c_str()); break; case ValueError: PyErr_SetString(PyExc_ValueError, exc.str.c_str()); break; case RuntimeError: PyErr_SetString(PyExc_RuntimeError, exc.str.c_str()); break; case IOError: PyErr_SetString(PyExc_IOError, exc.str.c_str()); break; そうなる case IOError: PyErr_SetString(PyExc_IOError, exc.str.c_str()); break; case IndexError: PyErr_SetString(PyExc_IndexError, exc.str.c_str()); break; case RuntimeError: PyErr_SetString(PyExc_RuntimeError, exc.str.c_str()); break; case ValueError: PyErr_SetString(PyExc_ValueError, exc.str.c_str()); break; 本質的に、私は行をソートするだけです case IOError: case IndexError: case RuntimeError: case …

3
コマンド「set」の結果を保存して復元する方法は?
:h :set私たちはそれを知っているから :se[t] デフォルト値と異なるすべてのオプションを表示します。 vimscriptでは、ユーザーが変更したこれらのオプションをすべて保存し、それらを変更して、後でユーザーが設定した値に戻したいと思います。 どうすれば簡単にできますか? :set(または同様のコマンド)の結果を変数に格納し、後でソースまたは別のコマンドに渡して、その内容を復元できる方法はありますか? または、コマンドの出力を手動で解析する必要がありますか(これは実行できますが、より簡単な代替手段が存在する場合、何の作業もありません)。

1
関数定義タグからプロトタイプタグへのジャンプ
私が理解している限り、Vimにはタグのサポートが組み込まれています(ctagsこの場合)。 これで、共通のCソースとCヘッダーファイルができました。ヘッダーファイルにはがvoid foo(void);あり、ソースファイルにはがありvoid foo(void) { /* */ }ます。 これで、ソースファイル内でを使用でき:tags fooます。これにより、ソースファイル内の関数定義にジャンプします。しかし、今使用する:tnextと、ヘッダーファイルの関数宣言にジャンプしません。 なんとなく可能だと思います。それは...ですか?

2
colorchemeを完全にオフにする方法は?
元の投稿 .vimrcで設定されたcolorchemeを持っていますが、完全にオフにしたい場合があります。つまり、Vimで端末のデフォルトの背景色と前景色を使用したいと思います。 私の問題は、簡単にそれを行う方法がわからないことです。:syntax offVim を使用すると、ほとんどのカラーリングがオフになりますが、カーソル線の色は削除されません。背景色を端末のデフォルトの色に変更しません。 :nocolorschemeまたはvim -u NONE色だけのコマンドはありますか? カスタムの.vimrcファイルを作成して、-uオプションでロードできることを知っています。私はもっ​​と簡単な解決策を探しています。 メジャーアップデート いくつかの異なるコマンドとアプローチを提案してきたので、それらのコマンドを呼び出した後に画面の写真をいくつか表示することにしました。 ターミナル環境 (明るい緑)と(黒)が得られるように、カスタムconfig.hでsuckless.orgのst(1)端末を使用します。私は、GNU / Linuxバージョンを実行しているものとPocketC.HIP船(に結果のLinuxチップ4.3.0-NTC#1 SMP水曜日5月11日午後9時57分30秒UTC 2016 GNU / Linuxのarm7l)。defaultfg = 10defaultbg = 0uname -a スクリーンショット カラースキームなし(これが私が欲しいものです) これは、Vimをで起動せずに実現したいことですvim -u NONE。 通常の色 次の場合にこれらの色が表示されます。 私は通常Vimを起動します(これは私の標準的なcolorchemeです)。 電話します:set t_Co=0。 カスタムモノカイカラースキームを使用しても何も変わらないことに注意してください。5でわかるように、デフォルトのカラースキームの外観を変更します。 面白いのは、:verbose set t_Co?その後に呼び出されたの出力が文字通り何も変わっていないt_Co=256ことを示していることです 私はVimをから始めTERM=xterm vimます。 デフォルトの色 次の場合にこれらの色が表示されます。 電話します:colorscheme default。 Vimはほとんどの色を削除しましたが、ターミナルのデフォルトに戻りません 私はそれを手に入れました: を呼び出してい:syntax offます。 ほとんどカラースキームはありません …


2
検索結果を差分の違いに制限する方法はありますか?
DiffText編集中のファイルの領域内のみを検索できるようにしたい。 関連質問:https : //stackoverflow.com/questions/2683521/vim-search-in-cc-code-lines ここで受け入れられた答えは、発言CommentやType構文グループには適しているようですが、Diffグループはどれも機能しません。それは、diffグループが他のグループ内にネストされていることに関係していると思います。 私の具体的なシナリオは、一連のファイルから一連のタブと末尾のスペースを削除したことです。ファイルをオリジナルと比較し、タブと末尾のスペース以外は何も変わらないようにしたいと思います。 PS以前のバージョンでは一貫性のないインデントを使用しており、すべてを手動で確認する必要があるため、すべてのタブをグローバルに置き換えたくありません。

2
カウントで始まるマッピングをn回繰り返します
次のマッピングを作成しました。 :map <F8> 3w を押す2<F8>と6単語移動すると思いましたが(2*3w)23単語移動しました。(これはvimエディターのヘルプセクションで言及されています) 23の代わりに6移動するようにマップする方法は?また、この機能が意図的にマッピング用にこのように機能するように作成されているかどうかをお知らせください。 (他のすべての場合において、それは次のように、23の2×3の代わりに広告のような簡単である2d3wと同じで6dw、同様d6w)

2
区切られた行でコマンドを実行する
どのように私は区切られたすべての行でコマンドを実行することができ、で言う \begin{otherlanguage}と\end{otherlanguage}? 例えば、 1 This line should not be affected, 2 \begin{otherlanguage} 3 but this should; 4 \end{otherlanguage} 5 this should not. (cmdはである可能性がありますnorm A test。)

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