タグ付けされた質問 「vimscript」

Vimに埋め込まれたスクリプト言語。これを使用して、Vimをニーズに合わせてカスタマイズしたり、プラグインを作成したりできます。VimLとも呼ばれます。



1
他の場合endifワンライナー
私の中にこのワンライナーがありますvimrcが、うまくいきません: if has("patch-7.4.710") | set listchars+=space:· else | set listchars+=trail:· | endif VIMさんのコメント: E518: Unknown option: else 手伝って頂けますか ?
11 vimscript 

2
vimscriptで記録しているかどうかを検出する方法はありますか?
のようなものはありますか eval("is_recording()") vimscriptで呼び出して、現在マクロを記録しているかどうかを確認できますか?私はこれがうまくいくと思ったでしょう: eval("mode(1)") しかし、それだけを返します"n"。 それが重要かどうかはわかりませんが、私はneovimを使用しているので、neovim専用の場合はそれで問題ありません。

2
Vimscriptでデリゲートを使用したり、関数を引数として渡すことはできますか?
私はvimscriptを学習するための小さなプラグインを作成しようとしています。私の目標は、選択したテキストを処理し、それを結果に置き換える関数をいくつか作成することです。スクリプトには次の項目が含まれています。 テキストを処理する2つの関数:パラメーターとして文字列を取り、元のテキストを置き換えるために使用する文字列を返します。現時点では2つしかありませんが、しばらくするとさらに増える可能性があります。 選択されたテキストを取得する関数:これは、最後の選択をヤンクしてそれを返すだけです。 ラッパー関数:処理関数を呼び出し、その結果を取得し、古い選択をこの結果に置き換えます。 今のところ、ラッパー関数は次のようになります。 function! Wrapper() " Get the string to insert let @x = Type1ProcessString(GetSelectedText()) " remove the old selection normal gvd " insert the new string normal "xp endfunction そして、3行目を次のように置き換える2番目のラッパーを作成する必要があります。 let @x = Type2ProcessString(GetSelectedText()) ラッパー関数に、実行し、3行目でジェネリックコールを使用するためのProcess関数を含むパラメーターを与えたいのですが、今のところcall、たとえば次のようなさまざまな方法を試してみました。 let @x = call('a:functionToExecute', GetSelectedText()) しかし、私は本当に成功し:h callていませんし、デリゲートトピックについてはあまり役に立ちませんでした。 ここでそれを要約すると、私の質問です: すべての処理用のラッパー関数を1つだけ作成するにはどうすればよいですか? vimscriptでデリゲートとして機能するものはありますか? デリゲートが存在しない場合、私がやりたいことを行う「良い」方法は何でしょうか?

1
Vimscriptで現在のウィンドウ/バッファ/タブページを取得します
Pythonでは、vimモジュールを使用する場合、現在のwindow / buffer / tabpageを取得するのは非常に簡単です。 current_win = vim.current.window current_buff = vim.current.buffer current_tabpage = vim.current.tabpage 私の質問は、純粋なVimL / Vimscriptでこれをどのように実行し、どのタイプのオブジェクトが返されるかです。これはwindows.txt(:h windows)のどこにも見当たらないようです。

3
vimscriptのビジュアルセレクションをどのように調達できますか?
vimrcを配置する前にテストしたいvimscriptの行が数行ある場合、視覚的に選択してソースを指定できますか? 私が試してみました 視覚的な選択vを行い、次に選択を行うためのモーションなどを行います。 :'<,'>so しかしvimはエラーを出します 範囲は許可されていません また :'<,'>w | so 与える 使用する !部分的なバッファを書き込む 視覚的に選択されたvimscriptを入手するにはどうすればよいですか?


2
変数が最後に割り当てられた場所をどのようにして見つけますか?
設定しようg:netrw_list_hideとしていますが、動作しないようです。私が何に設定したとしても、.vimrc常に価値があります,^\.\.\=/\=$。私がvimrc再びファイルを入手した場合にのみ、正しい値が保持されます。 これをデバッグするにはどうすればよいですか?その変数を設定しているプラ​​グインがあると思いますか?おそらくvimrcロードされた後で、それがどこに設定されているのかを見たいのです。

2
vimプラグインを作成するために従うべきことは?
だから私の質問は簡単です。vimを作成するためだけにvimスクリプトを学ぶのは良い考えですか、それとも他の受け入れられている言語を採用する必要がありますか? たとえば、このリンクは、Pythonを使用してvimプラグインを作成する方法を示すYouTubeビデオを開きます。 いくつかのvimプラグインを作成するつもりがない限り、Vimスクリプトは完全には役に立ちません。それでは、vimスクリプトのみを使用しないと実行できない特定のことはありますか?
11 vimscript 



3
exコマンド出力でgrepする方法は?
exコマンド出力でパターンを検索するにはどうすればよいですか?たとえば、:scriptnamesコマンドの出力でファイル名パターンを検索するにはどうすればよいですか?すべての種類のヘルプではgrepとvimgrepだけあり{file}、検索を実行する場所として。
10 vimscript 

1
関数が完了するまで画面が更新されないようにする
私は現在のvimバッファーにテキストを大量に移動して出力する機能を持っています。それを実行すると、目がくらむほどの速度で起こっていることをすべて見ると少し戸惑います。 関数が完了するまで画面をフリーズするにはどうすればよいですか? 問題の関数は次のとおりです。 function! MakeChoices() :let save_view = winsaveview() let start = line('.') "Locate previous *choice. (b=backwards, W=nowrap, n=doNot move cursor) let choiceStartLine = search('^*choice', 'bW') if !choiceStartLine echo "No *choice found. (*choice must not be indented. This is to avoid finding *choice blocks nested in another *choice block.)" return …
10 vimscript 

1
バッファの内容をvimscriptとして実行
私が持っているnofilevimscriptが含まれているバッファを、私はそれを実行したいです。ただし、:so % バッファではなく保存されたファイルが必要なため、機能しません。デフォルトでこれを行うvimコマンドはありますか?そうでない場合、同じことをする関数を作成することは可能ですか?

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