vimrcの複数行省略形のタブ/スペース関連のvimの問題

vimrcの複数行省略形のタブ/スペース関連のvimの問題

Cでテンプレートプログラムを作成するためにvimの略語を作成しようとしています。

.vimrcに次の略語を提供しました。

abbr main #include<stdio.h>
\^M#include<string.h>
\^M#include<math.h>
\^M#include<stdlib.h>
\^M
\^Mint main() {
\^M int T, N;
\^M scanf("%d", &T);
\^M while(T-- > 0) {
\^M     scanf("%d", &N);
\^M }
\^M return 0;
\^M}

単語を入力するとmain略語は機能しますが、インデントは正しくありません。スペース/タブ/組み合わせのみを試しましたが、コードを完全にインデントするのには何も機能しません。なぜ?

略語ツイスト

助けが必要ですか?

更新:私は試した

 abbr main #include<stdio.h>
\<CR>#include<string.h>
\<CR>
\<CR>int main() {
\<CR>int T, N;
\<CR>scanf("%d", &T);
\<CR>while(T-- > 0) {
\<CR>scanf("%d", &N);
\<CR>}
\<CR>return 0;
\<CR>}

これは同じ結果につながります。正しいインデントで複数行の略語を追加する方法を教えてくれる人はいますか?

ベストアンサー1

実際、私の考えでは、あなたの問題はXYの問題How can I do a multiline abbreviation?:実際の質問ではないようですHow can I easily add a sample function with a few keystrokes?。これを行うには、略語を使用せずにフラグメントを使用する必要があります。

略語を使わないのはなぜですか?

まず見てみましょう。:h abbreviations:

[略語]は、頻繁に使用する長い単語を入力して保存するために使用できます。これを使用して、明らかなスペルエラーを自動的に修正できます。

完全な機能よりも小さな変更には省略形を使用しますが、これはまったく目的ではありません。あなたが望むものは一般的に作品を作ることであり、すごいツールはすでに存在しているため、ホイールを再構築する必要はありません。

彫刻とは何ですか?

内容を明確かつ簡潔に保つために引用します。ウィキペディア:

スニペットは、再利用可能なソースコード、マシンコード、またはテキストの小さな部分を表すプログラミング用語です。

作品をどうやって入手できますか?

まず、スニペットストアが必要です。もちろん、手動で1つずつ作成することもできますが、Vimには問題を解決する素晴らしいコミュニティがあります。

だからVim スニペットあなたが探しているもの:60以上の言語で数百のスニペット(C main() 関数を含む)これは良い基礎です。もちろん、フラグメントが欠落している場合は直接追加できます。

この作品をどのように使用しますか?

フラグメントがあるので、フラグメントをバッファーに追加できるフラグメントエンジンが必要です。 vim-snippets の追加情報ファイルは次のとおりです。段落サポートされるエンジン専用です。

おすすめしたいウルティスニブしかし、これは個人的な問題に過ぎないので、提案されたさまざまなエンジンを試してみて、どのエンジンが最も気に入っているかを確認する必要があります。

どうやって入手できますか?

使用する場合プラグインマネージャそれは簡単です。例えばvimプラグイン次の行を次の行に追加するだけです.vimrc

Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'

その後、以下の推奨基本設定に従うことができます。アルティスニブを読む:

let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"

一度使用したら、:PluginInstallスニペットの使用を開始できますtab

おすすめ記事