viで文字列を検索する方法

検索コマンド

viで文字列を検索したい場合は

:/パターン

もしくは

:?パターン

というコマンドで検索できます。

/?の違いはカーソル位置から下方向に検索するか上方向に検索するかです。
次の候補までジャンプしたい場合はn、1つ前の候補に戻りたい場合はNで移動できます。

正規表現で検索

正規表現での検索もできます。

:/:?に続けて検索したいパターンを入力するところは同じですが、()|などの記号を使う場合は\に続けて入力するところに注意してください。

:/\(パターン1\)\|\(パターン2\)

\でエスケープしたくない場合は\vを使う方法もあります。

:/\v(パターン1)|(パターン2)

大文字小文字を無視

検索で大文字小文字を無視したい場合は

:set ignorecase

で設定できます。

Coroutine内で処理を中止する方法(Unity)

UnityのCoroutineは次のような感じで使います。

void Start()
{
  StartCoroutine(Example());
}

IEnumerator Example()
{
  // 処理したい内容1

  yield return null;

  // 処理したい内容2

  yield return null;

  // 処理したい内容3
}

何かエラーがあった場合などCoroutineを抜けたい場合はyield breakを使って次のような感じで実装できるみたいです。

IEnumerator Example()
{
  // 処理したい内容1
  if (error) yield break;

  yield return null;

  // 処理したい内容2
  if (error) yield break;

  yield return null;

  // 処理したい内容3
}

Coroutine内では普通のreturnでは終了できないので、代わりにyield breakを使うみたいです。

リンク

Exiting a coroutine – Unity Forum
https://forum.unity.com/threads/exiting-a-coroutine.113897/

C#のtuple型

C#でもPythonなどと同じようにtuple型が使えます。

tuple型の使い方

( ),を使って(1, 2, "abc")のような感じで書くとtuple型になります。
各要素の参照はItem1Item2Item3になります。

サンプル

using System;

public class Example1
{
  static public void Main ()
  {
    var tuple = (1, 2, "abc");
    Console.WriteLine($"{tuple.Item1} {tuple.Item2} {tuple.Item3}");
  }
}

実行結果

1 2 abc

varの部分はValueTuple<int, int, string>と書くこともできます。

Listでtuple型を使いたい場合

Listと組み合わせて使いたい場合は

List<ValueTuple<int, int, string>>

もしくは

List<(int, int, string)>

のようにして使い▽ます。

サンプル

using System;
using System.Collections.Generic;

public class Example2
{
  static public void Main ()
  {
    var list = new List<(int, int, string)>();
    list.Add((1, 2, "abc"));
    list.Add((3, 4, "def"));

    foreach(var tuple in list)
    {
      Console.WriteLine($"{tuple.Item1} {tuple.Item2} {tuple.Item3}");
    }
  }
}

実行結果

1 2 abc
3 4 def

Tuple Class

ValueTupleの方が使い易いと思いますが、これとは別にTuple Classというものもあります。

使い方は次のような感じです。

サンプル

using System;

public class Example3
{
  static public void Main ()
  {
    var tuple = Tuple.Create(1, 2, "abc");
    Console.WriteLine($"{tuple.Item1} {tuple.Item2} {tuple.Item3}");
  }
}

実行結果

1 2 abc

ValueTupleとTuple Classの変換

ValueTupleをTuple Classに変換したい場合は.ToTuple()、Tuple ClassをValue Tupleに変換したい場合は.ToValueTuple()を使って相互に変換できます。

サンプル

using System;

public class Example4
{
  static public void Main ()
  {
    Tuple<int, int, string> tuple1 = (1, 2, "abc").ToTuple();
    ValueTuple<int, int, string> tuple2 = Tuple.Create(3, 4, "def").ToValueTuple();
    
    Console.WriteLine($"{tuple1.Item1} {tuple1.Item2} {tuple1.Item3}");
    Console.WriteLine($"{tuple2.Item1} {tuple2.Item2} {tuple2.Item3}");
  }
}

実行結果

1 2 abc
3 4 def

リンク

Tuple types – C# Guide | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/tuples

Tuple Class (System) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/system.tuple