vimrcを配置する前にテストしたいvimscriptの行が数行ある場合、視覚的に選択してソースを指定できますか?
私が試してみました
- 視覚的な選択vを行い、次に選択を行うためのモーションなどを行います。
:'<,'>so
しかしvimはエラーを出します
範囲は許可されていません
また
:'<,'>w | so
与える
使用する !部分的なバッファを書き込む
視覚的に選択されたvimscriptを入手するにはどうすればよいですか?
vimrcを配置する前にテストしたいvimscriptの行が数行ある場合、視覚的に選択してソースを指定できますか?
私が試してみました
:'<,'>so
しかしvimはエラーを出します
範囲は許可されていません
また
:'<,'>w | so
与える
使用する !部分的なバッファを書き込む
視覚的に選択されたvimscriptを入手するにはどうすればよいですか?
回答:
コマンドラインでヒットして<C-u>
から@*
、入力して入力します。
<C-u>
'<,'>
テキストが視覚的に選択されている場合、自動的に挿入された視覚範囲を削除します。
:@*
*
現在視覚的に選択されているものをすべて含むレジスターの内容を実行します。
選択/強調表示されたテキストがWebブラウザー(firefox、chromeなど)にある場合*
でも機能します。レジスターを使用すると、vimで直接アクセスできます。
テキストがvimバッファーで選択されている場合、別の解決策は、名前を付けたレジスター(たとえば、と入力してレジスター)にコピーすること"ay
です。
次に、コマンドラインで「:」<C-r>a
と入力して入力します。
Ctrl+ rは、文字で表される一種のプロンプトを表示します"
(詳細については、を:h c_Ctrl-r
参照)。
この新しいプロンプトで、レジスタの名前を指定すると、その内容がコマンドラインに挿入され、実行前に編集できるようになります。
あなたはレジスタを指定せずに、いくつかのテキストをコピーする場合のほかに、それは無名レジスタからアクセスできるようになります」。
したがって、ファイルにvimscriptの行があり、それをすばやくソースしたい場合は、を使用してコピーY
し、コマンドラインで::<C-r>"
を入力して、Enter キーを押します。
最後に、この最後のソリューションを使用する場合、注意しなければならない問題があります。
このようなコマンドラインで奇妙な文字が表示された場合^M
、それはキャリッジリターンのキャレット表記です。削除する必要があります。削除しないと、おそらくエラーが発生します。
要約すると、あなた:
Y
:
<C-r>
してレジスタプロンプトに入ります"
名前のないレジスタを呼び出すタイプ^M
文字を削除するにはバックスペースを押します: <C-r>a
実際にそれがうまく機能することについてあなたの提案を試してみ ました:) vimは^M
's as line returns-を読み取り、それぞれを独自の個別の行/コマンドとして実行したと思いますか?
私の他の答えよりも直接質問に、このようにマッピングを定義できます(nnoremap
選択しないvnoremap
場合は、現在の行を実行するだけです。ビジュアルモードがアクティブな場合)。
nnoremap <F2> :execute getline(".")<CR>
vnoremap <F2> :<C-u>for line in getline("'<", "'>") \| execute line \| endfor<CR>
どちらの場合も、「現在の行」は:execute
dなので、ビジュアルバージョンでは:execute
、ビジュアル選択を介して次々と行を表示します。
別の回答で述べたように<C-u>
、:は、入力時にコマンドラインにポップアップ表示される範囲指定を削除します。|
そう、彼らはの終わりと解釈しているので、文字をエスケープする必要があるvnoremap
コマンド。
これは、一部の脱出体操を取り除く関数に変換することもできますが、現時点では大きな勝利とは思えません。基本的には、vnoremapが複数行に展開さcall
れ、[nv]マッピングモードに応じて範囲が指定されているかどうかがわかります。
@*
でした、ありがとう!