Vi & Vim

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

4
行にあるグローバルexコマンドのパターンを使用して、別の行で置き換えます
私のfortranコードには、次のような多くのブロックがあります subroutine name(arg1,arg2,arg3,...) : end subroutine そして私は彼らになってほしい subroutine name(arg1,arg2,arg3,...) : end subroutine name これらの各ブロックは、任意の量のスペースでインデントできます(実際、そのようなブロックはネストできます)。コマンドで試してみました :g/^ *subroutine \(.*\)/;/end subrout/s/end subroutine/& \1 バッファ\1が空であるように、これは各行を変更します(一番下の行でそれを読みます)。コマンド :g/^ *subroutine \(.*\)/;/end subrout/s/end subroutine/& hello うまく機能しますが、明らかに私が望んでいるものではありません。だから問題は、グローバルexコマンドで一致したパターンを置換文字列でどのように使用できる:gかです。 編集 質問を編集しているのは、投稿した時点で、私が参照した特定のケースに対する回答である回答を急いで受け入れたが、質問のタイトルは少し一般的ではなかったためです。 私は要点に行きます。私は次のようなファイルを持っています(できるだけ一般的にするだけで意味がありません)。 # sec1 fun1 are you a function? fun2 no. fun3 ok, nice to meet you! # 2nd part first …

2
VimはEmacsのようにバッファを非表示にしますか?
私は、バッファ、ウィンドウ、タブのvimの概念がどのようにemacsにマッピングされるかを理解しようとしています。 その私には思える<c-w>sし、<c-w>vEmacsのとほぼ同等であるC-x 2とC-x 3。vim分割はデフォルトで等間隔であり、emacsは現在のウィンドウを2等分するため、これらは完全に等価ではありません。 vimの(C-x 0このウィンドウを閉じる)、C-x 1(このウィンドウ以外のすべてを閉じる)に相当するものは何ですか?現在表示していないバッファを閉じずに非表示にしたいので、bufexplorerなどで後で呼び出すことができます。


1
キーの組み合わせ「y <CG>」のマッピングを解除できません
でマッピングをチェックするとき :verb nmap y 私は得る: n y&lt;C-G&gt; *@:call setreg(v:register, &lt;SNR&gt;104_recall())&lt;CR&gt; Last set from ~/.vim/bundle/vim-fugitive-2.2/plugin/fugitive.vim 私はそれをアンマップしよう:unmap y&lt;C-G&gt;とし:unmap y&lt;C-g&gt;たが、それは効果がありませんし、私はエラーを取得しますE31: No such mapping。 このマッピングを削除するにはどうすればよいですか?:unmap y&lt;C-G&gt;ここで動作しないのはなぜですか?

2
Python docstringの折りたたみ
WIKIによると、スクリプトは構文に基づいて折りたたむことができます。誰かがPython docstringを折り畳むための解決策を持っていますか? 基本的に、私が必要なのは次のように折り畳むことだけです""" text between triple quotation marks """: ありがとう。

1
「標準」の後にexモードコマンドを続行しますか?
繰り返しの編集とリファクタリングを処理するときに、非常に長いマクロをよく使用します。可能な限り、これらをマクロとして記録するのではなく、ex-modeコマンドとして記述します。これは、対話的に(コマンドウィンドウを使用して)編集する方が簡単だからです。 ただし、いくつかの通常モードのコマンドを追加する必要がある場合があります。たとえば、後でマクロで使用するために、行全体ではなく行の一部だけをヤンクしたり、テキストを希望どおりに並べたりする必要があります。 が含まれた後にexモードコマンドを続行する方法はありnormますか? (私が話している種類の複雑さの実際の例については:) :'a+s/\_^\s*\(\S*\)::\_[^&gt;]*&gt;\s*\("[^"]*"\)\s*;\_s*\_$/ "\1", \2,/ | m 'a- | norm f,50a ^[d44| 最後にテキストを追加してexモードコマンドとして実行させる方法はありますか?

2
航空会社のテーマを変更するにはどうすればよいですか?
私はデフォルトのテーマで航空会社を使用しています(私のテーマgruvboxに依存しています)。 :AirlineTheme base16すでにvimを開いているときに使用して、航空会社のテーマをbase16に変更します。 しかし、設定したときにデフォルトの航空会社のテーマを永久に変更したい AirlineTheme base16 call AirlineTheme base16 set AirlineTheme base16 AirlineTheme base16 -失敗メッセージは表示されませんが、航空会社のテーマはすべて削除されます。 call AirlineTheme base16-エラーが発生します"Missing parentheses。私も試してみましたcall AirlineTheme base16()。まだ同じエラー。 set AirlineTheme base16 -これは言う unknown option AirlineTheme どうすれば設定できますか?

2
どうすればPython 3サポートだけでvimを構築できますか?
私はArchを利用していて、最近、vim-python3およびgvim-python3パッケージが削除されたため、:pythonコマンドがとして機能するようにソースからvimを構築していpython3ます。具体的には、vim-jediパッケージが正しく機能するようにこれを行っています。変えてみた --enable-pythoninterp=dynamic 私の中のフラグPKGBUILDへ --disable-pythoninterp しかし、vim --versionビルドしてインストールした後でも、それでも表示されました +python/dyn また、 :python import sys;print(sys.version) まだpython 2を示しました。Python 3のみを使用するには何を変更する必要がありますか?

2
現在のカーソル位置から開始して、最後の実際の選択ではなく、最後の視覚的形状を再選択する方法はありますか?
gvが最後のビジュアル選択を再選択することを知っています。これは素晴らしいです、そして私はそれを頻繁に使用します。 しかし、時々私は関連しているが異なる何かをしたい:現在のカーソル位置から、以前の視覚的選択と同じ形であるが、カーソルが現在ある場所に配置されたブロックを選択する。 特に、テキストのチャンクを貼り付けて、何らかの置換や変換をしたいときに、私はこの欲求をよく持っています。したがって、このコマンドを使用すると、貼り付けたものを再選択できます。(そのため、「最後の貼り付けを視覚的に選択する」コマンドも役立ちますが、それでも、「最後の貼り付けを再選択するかどうかに関係なく、最後の視覚的形状を再選択する」という文字列が必要な場合もあります。編集:をご覧ください。現在のカーソル位置から開始して、最後の実際の選択ではなく、最後に貼り付けたテキストを再選択する方法はありますか?この質問の場合) (注:これを行うための組み込みの方法がない場合は、〜/ .vimを編集してvimscriptの例を追加し(そしておそらくそれを変更し)、これを簡単なキーの組み合わせにバインドしますが、最初から作成しますこれを行うことは私の現在の能力を超えています。)

1
「/」検索を包括的モーションとして使用することは可能ですか(「f」が「t」と同じであるように)。
私は、tやfモーションのファンであり、一部のキャラクターまで、または一部のキャラクターを含むテキストを変更します。より複雑な基準については、/テキストを特定の語句に変更するために検索文字列を続けて使用し始めました。 たとえば、私が持っていた場合: delete this text, but not this. 行で、0d/not thisを除くすべてを削除するために行うことができましたnot this.。これは通常、正確に機能させたい方法ですが、パターンを編集に含めたいと思います。したがって、前の例では、ピリオド以外のすべてを削除していました。 同様の構成を使用してこれは可能ですか?追加のプラグインを使用しないほうがよいと思いますが、そのような回答も歓迎します。


4
特定のファイルタイプを除くすべてのファイルで機能するようにオートコマンドを定義するにはどうすればよいですか?
たとえば、次のautocommand定義があります。 augroup cursorline autocmd! autocmd WinLeave,BufLeave * set nocursorline autocmd WinEnter,BufEnter * set cursorline augroup end *.texファイルを除外するものを定義したい: autocmd WinEnter,BufEnter * "except *.tex" set cursorline そのための構文は何ですか?ヘルプドキュメントを検索するためのキーワードがわかりません。

3
コミットメッセージを書くときにvimでgit diffを取得するにはどうすればよいですか?
これは奇妙な質問かもしれません。私はすでにこのdotfilesでこの設定を行っているため、友達にdotfilesで設定するように指示する方法がわからないだけです。 vimでgit commitメッセージを作成するときはいつでも、gitcommitファイルに素敵なgit diffを表示する方法を知りたいです。それが役立つ場合は、ここに私のドットファイルがあります。私はオンラインで答えを見つけることができず、何を検索するかわからなければ検索するのは困難でした。

2
vimrcから呼び出すことができるプラグインでコマンドを設計する方法
ユーザーがカスタムオペレーターを作成できるようにするプラグインに取り組んでいます。オペレーターは、移動するモーションまたはテキストオブジェクトにVimL式を適用します。 クリーンなユーザーインターフェイスを維持する カスタムオペレーターを定義するための最もクリーンなインターフェイスは、コマンドを使用することだと思います。:MapExpress次のようなコマンドを呼び出すコマンドを定義しました。 :MapExpress cd '/* ' . v:val . ' */' これはcd、Cスタイルのコメント区切りでモーションまたは選択を囲むために、ノーマルモードオペレーターとビジュアルモードマッピングを作成します。 もちろん、ここに問題があります。プラグインで定義されているコマンドを.vimrcファイルから呼び出すことはできません。 不十分な回避策 私は完全に満足していないいくつかの回避策を考え出しました。 ユーザーautocmd VimEnter *がコマンドを呼び出すために使用する これは機能しますが、多くの「精神的オーバーヘッド」が追加されます。多くのVimユーザーはどのようにautocmd機能するかをしっかりと把握していないと思います。 ユーザーが~/.vim/after/plugin/コマンドを呼び出すファイルを作成します これも機能しますが、この構成の一部が独自のファイルでオフになり、簡単に失われて忘れられるという欠点があります。 コマンド定義をプラグインのautoload/ディレクトリに移動し、ユーザーがファイルのロードをトリガーするいくつかのメソッドを呼び出して、コマンドを定義します これは次のようになります。 call express#init() MapExpress cd '/* ' . v:val . ' */' 少し良いですがexpress#init()、プラグインが機能するためにメソッドが必要かどうかについて混乱を招きます。 コマンドを使用する代わりの方法 オペレーターを定義するコマンドを使用するいくつかの代替案も検討しましたが、それぞれに注意点があります。 ユーザーは関数を呼び出して演算子を定義します これは次のようになります。 call express#operator('cd', '"/* ".v:val." */"') これはひどいことではありませんが、引用符で囲まれた式が必要になるという欠点があります。式で引用符を使用したい場合は、煩わしいことがあります。 ユーザーが&lt;expr&gt;マッピングを使用 このような: nmap &lt;expr&gt; …

1
Exモードと改善されたExモードの違いは何ですか?
2つのvim Exモードがあります。 vi互換のExモード(vim -e -s)、 vimはExモードを改善しました(vim -E -s)。 Vimの改善されたExモードでは、vi互換のExモードよりも高度なコマンドを使用できますが、主な違いは何ですか?またはどこでそれらを見つけることができますか?
8 ex-mode 

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