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

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


2
Vimscriptには正式名称がありますか?
Vimscriptと呼ばれることもある言語の名前は、議論の的となっています。Viml(またはVimL?)を使用する場所もあれば、Vimscriptを使用する場所もあります。正式な名前はありますか?もしあれば、それは何であり、いつから公式ですか? VimL対Vimscriptに関する質問(5歳まで) 公式名を持っていると言及している最近の投稿 の実行により、次の:helpgrep \cviml\>ようになりsyntax.txtます。 g:vimsyn_noerror Not all error highlighting that syntax/vim.vim does may be correct; VimL is a difficult language to highlight correctly. そしてversion7.txt: Added special python-vars objects also available for python-buffer and python-window. They ease access to VimL variables from Python. したがってVimL、公式用語のように見えusr_41.txtますが、言語を最もよく文書化するファイルには、の言及はありませんVimL。

4
ラインをインターリーブしてブロックをマージする
これから渡すように、行をインターリーブすることで2つのテキストブロックをマージする専用の方法はありますか? a1 a2 a3 a4 b1 b2 b3 b4 それに: a1 b1 a2 b2 a3 b3 a4 b4 いくつかのコマンドで? 編集:私は本当に佐藤桂のソリューションが好きです、ここに私がそれを実装した方法があります: function! Interleave() " retrieve last selected area position and size let start = line(".") execute "normal! gvo\<esc>" let end = line(".") let [start, end] = sort([start, end], "n") let size …


1
:search()を呼び出した後、一致した文字列を取得することは可能ですか?
vimscript関数では、l:matched呼び出し後に一致した文字列を変数に割り当てる必要search()があり、現在行っている方法よりも短い方法があるかどうか疑問に思っています。 let l:pattern = '\v^Foo: \zs.*' let l:line = search(l:pattern) let l:line_text = getline(l:line) let l:matched = matchstr(l:line, l:pattern) 理想的には、次のようなものが欲しい let l:matched = search_text(l:pattern) に頼らずにgetline()。見つけられないようなvim関数はありますか?
14 vimscript  search 

2
カーソルが既に文字列内にない場合にのみ、挿入時に自動的に閉じ「または」を追加します
でvimrc開き括弧を入力すると、閉じ括弧と中括弧を自動的に入力するマッピングを定義しましたinoremap ( ()<esc>i。 私は同じことをやってみたい"と'、しかし、カーソルが現在の文字列内にない場合にのみ、 -文字列の中のように'、おそらくアポストロフィではなく、ストリング区切り文字です。これどうやってするの?

2
MarkdownのメモやインラインコメントからVimドキュメントを生成する方法、またはドキュメントを追加するより良い方法はありますか?
これは、 2つの質問の1つです。最近、私はvimscriptの詳細を学び、vimの内部を学び、vimプラグインを書くための最初の一歩を踏み出しました。このプロセスの間、私は個々のマークダウンファイルに広範なメモを保存し、vimscriptファイルに多くのインラインの「ドキュメント」コメントを追加しました。 私はついに共有する価値のあるコードを手に入れたので、実際のドキュメントを追加したいと思っています。私はまだ自分のhelpdocファイルを作成していませんので、そのプロセスを理解しています。 このワークフローをまだ経験していないか、十分に理解していない場合、私が理解しようとしているタスクは2つあります。 vim / vimscript上のマークダウン「メモ」ファイルからhelpdocファイルを生成するため、vimからいつでもすばやく簡単に読み取り/参照できます。 vimscriptファイルからインラインドキュメントを解析し(shoccoがシェルスクリプトで機能する方法に似ています)、vimscriptに関連するヘルプドキュメントを生成します。 アイデアに関する提案やアドバイス(...、より良いアイデアは...)

4
4行ごとに反転する方法は?
まず、これが私の最初の投稿であるため、VIMが優れたツールであり、フォーラムが質問への回答を見つけるのに非常に役立ち、多くの役立つ人々が提供していることを伝えたいと思います貴重な支援。私はまだVIMが初めてなので、ここで学んだことのほとんどすべてがここから来ています。 私の質問は、ファイル内のすべての行を反転する方法を知っています(他の方法の中でも:g / ^ / m0)が、ファイル内の4行ごとに反転する方法がありますので、 line1 line2 line3 line4 line5 line6 line7 line8 ... になる line4 line3 line2 line1 line8 line7 line6 line5 ... このようなファイルには、常に4行の正確な倍数が存在すると想定できます。
13 vimscript 


2
通常のコマンドを実行した後、カーソルの位置を復元する方法は?
現在の行の6列目の文字をドル記号($)に置き換える関数をコーディングしようとしていますが、カーソルを関数を呼び出す前の位置に残したいのです。 そこで、現在の列を保存し、変更を実行してから、次の関数を使用して戻ってきました。 function! DollarSplit() let col_number=col(".") "stores the current column number of the cursor normal! 6|r$ " replaces the 6th caracter in line with a $ execute col_number."|" endfunction 私はおそらくexecuteコマンドについて何かを誤解しています...または、実行したいコマンドを含む文字列を作成する必要がありますか?


2
cpo&vimは特別な構文ですか?
スクリプトでは、次のようなことをするのが習慣です。 let s:save_cpo = &cpo set cpo&vim ... script ... let &cpo = s:save_cpo スクリプトの互換性のないモードを確保するため。 は: set cpo&vim のようなある種の特別な構文foo & bar?それとも、コマンド、トリガーライン、または他の何かのようなものですか?
13 vimscript 


4
スペル候補をループするコマンド
私はにマップzzしましたが1z=、これはほとんどの場合素晴らしいことですが、ときどき最初の提案は正しいものではありません。 したがって、他の提案を繰り返すために繰り返しzz(または.)続けたいと思います。 zz同じ単語の2番目はのようu2z=に機能し、3番目zzは同じu3z=ように機能します。 それを行う方法に関するアイデアはありますか? 編集: @ nobe4の素晴らしい答えに基づいて、私は自分がやりたいことをやり遂げることができましたが、改善や提案がある場合に備えて、しばらくここに置いておきます。 let s:spell_position = [] let s:spell_count = 0 let s:spell_word = "" function! LoopSpell() if s:spell_position != getpos('.') || \ (s:spell_count > 0 && s:spell_word !~ expand("<cword>")) let s:spell_count = 0 let s:spell_position = getpos('.') endif if s:spell_count > 0 silent execute "normal! …

3
純粋なvimscriptで置換( `:s`なし)
私は私のvimrcに以下を持っています: func! AddSpaceBeforeEqual() s/\([a-z)_0-9"'\[\]]\)=/\1 =/ge endfunc vimrcのlintにvintを使用していて、次の警告が表示されました。 ProhibitCommandWithUnintendedSideEffect 意図しない副作用のあるコマンドを回避します。:s [ubstitute]を使用すると、カーソルが移動してエラーメッセージが出力されるため、使用しないでください。スクリプトにより適した関数(search()など)を優先します。多くのvimコマンドには、副作用が少なく同じことを行う関数が存在します。組み込み関数のリストについては、:help functions()を参照してください。Google Vimscriptスタイルガイド ただし、:sコマンドを使わずに置換を行う方法だとは思いません。 たとえば、search()関数はパターンに一致する行を提供しますが、置換を行う方法はありません。このsubstitute()関数は文字列を操作し、ファイル全体を置き換えません。 自分で代替メソッドを実装する必要がありますか、それとも私の関数を書き換えるよりスマートな方法ですか?

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