Vi & Vim

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

1
なぜ:bd#代替バッファが存在しないときに現在のバッファを削除するのですか?
これが私が観察している行動を再現する方法です。 まず、次のコマンドを入力します。 echo aaaaa > a vim a Vimでは、次のコマンドを入力します。 :ls :e # :echo bufname('#') 上記の3つのコマンドの出力を次に示します。 :ls 1 %a "a" line 1 :e # E194: No alternate file name to substitute for '#' :echo bufname('#') bufname('#')コマンドは出力を生成しません。 今、私はこのコマンドを入力します: :bd # 現在のバッファーは削除され、「[名前なし]」バッファーに置き換えられます。 :ls 2 %a "[No Name]" line 1 E194実行時にエラーが発生すると予想していました:bd #。代わりに現在のバッファを削除したのはなぜですか? 使用していVIM - …

1
Vimでの作業中にVimの設定を編集するにはどうすればよいですか?
私はVimを使い始めたばかりですが、Vimで作業しながら、キーボードバインディングやその他のVim設定でスクリプトを編集できるようにしたいと考えています。 たとえば、すべてのset xxコマンドを1つのファイルにまとめ、Vimでファイルを更新し、設定を再適用できるようにしたいと考えています。sourceファイルを編集しているときに-ing するだけの問題ですか?
9 vimrc  set 

3
viコマンド:shからシェルにいることをどのように確認しますか?
viでは、:shコマンドでシェルターミナルを取得できます。そして後で、exitシェルでviに戻ることができます。 しかし、シェルターミナルを長期間使用していて、exit何かを閉じるか、viを返すかを忘れてしまった場合。 viに戻るかどうかを確認する方法はありますか?jobsまたは機能しfgていません。

1
blowfish2を使用するときにvimが弱い暗号について文句を言うのはなぜですか?
vim(:X)で組み込みの暗号を使用して保存した2015年のドキュメントを開きました。それはblowfish当時使用していた節約でした。 私が今受け取ったメッセージ(2017)は次のとおりです。 Warning: Using a weak encryption method; see :help 'cm' Enter encryption key: ********************************************* Enter same key again: ********************************************* つまり、および暗号化方法Iにまで読んだ後、私は思ったが、私はそれはいくつかの欠陥としなければならなかったと仮定、変でしたset cryptomethod=blowfish2。これは、開いた後に機能し、cryptomethodをblowfish 2として表示します。問題は、弱い暗号化の使用に関するメッセージがまだ表示されることです。どうして?古いblowfish1暗号署名の残骸はありますか?修正するには、テキストをエクスポートして再保存する必要がありますか?

3
vimプラグインでpythonとpython3の両方をサポートするエレガントな方法
私は最近、自分のvimプラグインを変更してpython3をサポートするようにするプルリクエストを受け取りました。しかし、これらの変更により、Pythonをリッスンしているように見える私のMac上のvimのプラグインが壊れます。 python import sys 対 python3 import sys プラグインのスクリプトに、使用するステートメントを検出させるエレガントな方法はありますか?何かのようなもの: if has('python') python import ... elseif if has('python3') python3 import ... else finish endif ありがとう。

1
置換コマンドのプレビューを取得するにはどうすればよいですか?
かなりの頻度で、大きなファイル全体で一致がまばらになり、自明ではない検索式と置換式を使用する置換を実行する必要があることに気付きます。 たとえば、のような関数呼び出しがあるとしokFunction(arg1, arg2 arg3)ます。もちろん、引数は関数呼び出しごとに異なります。今、私は必要としないより良い機能を発見したと言いますarg2。ファイル全体を簡単に調整できます :%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc 概念的には単純ですが、このかなり長いパターンで構文が正しいかどうかはわかりません。cフラグは本当にここに役立ちますが、問題は、確認を求めたとき、Vimはマッチが置き換えられますどのような表示されませんということです。つまり、置換式は表示されますが、評価結果は表示されません。で置換を確認するとy、vimはすぐに次の試合にジャンプし、間違いを犯したかどうかを確認することはできません。 問題を部分的に解決するvim-overプラグインを見つけましたが、コマンドを入力しているときに画面にすべてのマッチが表示されている場合のみです。Enterキーを押すと、動作は上記の説明とまったく同じになり、プレビューは表示されません。 それで、代替コマンドで確認を求めるときにvimに置換式を評価させる方法はありますか?

4
neovimでは、エディターインスタンス間でレジスターを共有するにはどうすればよいですか?
vimには、異なるvimクライアント間でのレジスタ共有を可能にするクライアント/サーバー分割があったことは知っていますが、neovimで同じことをどのように実現しますか?クライアント/サーバーフラグはサポートしていません。私はこの質問を見ましたが、私の目標は特にレジスタを共有することであり、クライアント/サーバーの残りの部分を模倣することではありません。neovimリモートのようなものが唯一の方法ですか、それとももっと簡単な方法がありますか?

3
Vim 7.4で.vimrcの強調表示コマンドをすぐに有効にするにはどうすればよいですか?
ファイルにいくつかのhighlightコマンドがあり.vimrcます。Vim 7.3では、これらはVimの起動直後に有効になりました。Vim 7.4にアップデートした後、これはもう当てはまりません。Vimは最初はデフォルトの強調表示を使用します。を.vimrc実行して2回目の読み込みを行うとsource ~/.vimrc、強調表示が思い通りに機能します。 次の手順を使用してこの問題を再現できるはずです。 .vimrcファイルのコピーを作成します。 ~/.vimrc行だけを含むファイルに置き換えますhighlight Type ctermfg=28 cterm=bold。 実行vim dummy.c(例えばGNOME端末用)256カラー端末に。 intバッファに入力します。int通常のフォントで表示され、私が欲しいものではありません色のライトグリーン、でなければなりません。 と入力し:source ~/.vimrcます。これで、intは太字のフォントで表示され、濃い緑色になります。 「vimの色を制御/構成する方法」の記事によると、highlightコマンドをに配置するだけで問題ありません.vimrc。記事はコマンドのsyntax enable後に置くべきだと言っていますhighlightが、これは何の違いもありませんでした。 私の最初の修正は、それぞれ前に付加することだったhighlightにコマンドを.vimrc持ちますautocmd VimEnter *。これは一部のファイルタイプでは機能しましたが、他のファイルタイプでは機能しませんでした(Cファイルは一例です)。 この動作の理由は何ですか?highlightVimの起動時にコマンドを実行して、Vimセッション全体のすべてのバッファーでコマンドを有効にする方法


1
vimのリファレンス/ドキュメント
vimに付属する唯一のドキュメントはvimに関するものだと思います。 プラグインをインストールすると、プラグインのドキュメントも表示されます。 しかし、vimの他の言語のドキュメントはありますか? たとえば、私がVimのpythonでコーディングしていて、Pythonでリスト内包表記をすばやく検索したいとします。:h python-docVimと入力するだけでPythonのドキュメントがVimのドキュメントに表示されたら素晴らしいと思います。 他の例は、:h markdownマークダウン構文などを表示することです。 この種のものはすでにウェブ上にありますか?私がダウンロードできるようなドキュメントはあります:helptagsか?私はグーグルしようとしましたが、それが機能しませんでした。たとえば、グーグルvim markdown documentationグーグルがvimでマークダウンを書く方法を知りたいと思って、Vim用のマークダウンプラグインのようなリンクを表示するので...

2
>>で次のインデントレベルにインデント
時々、インデントのレベルまでインデントされていないコードを使用する必要があります。通常は、ファイルに何かをコピーして貼り付けた後、Vimを(レベルごとに4つのスペース)に設定します。私は通常、<<およびで間に合います>>。問題は、次のインデントレベルにジャンプせず、4つのスペースを追加または削除するだけです。 このようなコードがある場合 if condition: do this do that やって>>上のことdo thatになります if condition: do this do that これに行きたい if condition: do this do that 上記の行のインデントを簡単に一致させるだけでなく、4つのスペースを追加するのではなく、次のレベルのインデントにジャンプするようにします。 これは、インデントに関する.vimrcにあるものです :set tabstop=4 shiftwidth=4 expandtab

1
プロンプトなしで起動時にエコーメッセージ
特定の起動機能が成功したかどうかに基づいて、起動時にカスタムメッセージをエコーし​​ます。私はこれを試しました.vimrc echo 'test' "All my settings ... タイプしたばかりのようにメッセージをエコーするvimが欲しい echo 'foo' vim を開いた後、コマンドラインから実行しますが、代わりに、vimウィンドウが開く前に表示されるこの厄介なダイアログボックスが表示されます。私も試しました exe 'echo "test"' そして silent echo 'test' しかし、どちらもうまくいきませんでした。
9 vimrc  echo 

1
Vimディスプレイをテキストに出力
に似たコマンドはあるのでしょうか:TOhtml。ただし、プレーンテキストのみで、Vimディスプレイ全体を表します。 たとえば、次の表示があるとします。 次のテキストファイルを作成します。 1 B 1 a ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ N <me] [+] 100% 1:1 ~ 1 a ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ N <me] [+] 100% 1:1 N <e] [+] …
9 vimscript 

1
フルコマンドとショートコマンドの違い
使用の間に実際的な違いはありますか :e そして :edit より読みやすい:editので、マッピングで使用することが意味をなす読みやすさを除きます。 それらの間に違いはありますか? 注:これは他のすべてのコマンドにも適用されます。

4
行番号固有のテキスト幅設定
私はメールの作成にgvimを使用tw=72し、長い行を改行するために使用しています。次に、同じドキュメントの基本的なメールヘッダーも編集します。たとえば、メールに受信者を追加します。今ではtw=72、72文字の後も毎回壊れます。 tw=0最初の4行(ヘッダー部分)とtw=72残りのドキュメントをどのように設定できますか? 関連する場合、私のformatoptionsは次のようになります。 set fo+=tcqn

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