Vim で Windows 上のテキストを Ubuntu にコピー＆ペーストする

# Vim で Windows 上のテキストを Ubuntu にコピー＆ペーストする

こんにちは、@studio_meowtoon です。今回は、WSL の Ubuntu 24.04 LTS の Vim で Windows 上のテキストを Ubuntu にコピー＆ペーストする方法を紹介します。
![linux_on_windows_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/4a358c7f-fc12-9be3-5668-3273264c605a.png)

## 目的

Windows 11 の Linux でクラウド開発します。

こちらから記事の一覧がご覧いただけます。

https://qiita.com/studio_meowtoon/items/6119ab05d8b13527efd8

## 実現すること

Ubuntu の Vim で Windows 上のテキストを Ubuntu にコピー＆ペーストする方法をマスターします。

### Vim とは？  

<details>
<summary>こちらを展開してご覧いただけます。</summary>

### [Vim (ヴィム)](https://github.com/vim/vim)

:::note info
Vim は、テキストエディターの一種で、Unix および Unix 系オペレーティングシステム上で動作する高機能なテキストエディターです。Vim は、Vi エディターの機能を拡張し、GUI、プラグイン、構文ハイライト、改行など、多数の追加機能を提供しています。  

Vim は、コマンドラインから操作することができ、一度コマンドを習得すると、効率的にテキストを編集できます。Vim は、テキスト編集に特化したエディターであり、プログラミング、シェルスクリプト、マークアップ言語、設定ファイルなど、あらゆる種類のテキストファイルを編集するために広く使われています。
:::

</details>

## 開発環境

+ Windows 11 Home 23H2 を使用しています。 

:::note info
[WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作しますので macOS の方も参考にして頂けます。  
:::  

<details>

WSL (Microsoft Store アプリ版) [※ こちらの関連記事からインストール方法をご確認いただけます](https://qiita.com/studio_meowtoon/items/cd0c4a607d451dbf5430)

```sh
> wsl --version
WSL バージョン: 2.2.4.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.61
```

Ubuntu [※ こちらの関連記事からインストール方法をご確認いただけます](https://qiita.com/studio_meowtoon/items/cd0c4a607d451dbf5430)

```sh
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04 LTS
Release:        24.04
Codename:       noble
```

</details>

:::note warn
この記事では基本的に Ubuntu のターミナルで操作を行います。
:::

## はじめに

:::note warn
はじめてターミナルでコマンド操作を行う際、**Vim に対して恐怖心を感じる**ことがありますが、**実際に Vim を使ってみる**ことで**自然にマスター**できます。Vim はプログラマーやシステム管理者に必須のツールで、使い方を学ぶことでより効率的な作業が可能になります。初心者の方もぜひ挑戦してみてください。
:::
  
## 練習に使う内容

Java ソースファイルを作成します。

```sh
$ vim HelloWorld.java
```

ファイルの内容

```java:HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
```

:::note warn 
上記の内容を Vim を学習するための練習材料とします。
:::

## Home に移動する

:::note alert
**コマンド操作**は、誤った操作をすると大変なことになることがあります。そのため、慎重に行動することが大切です。**ホームディレクトリから逸脱しない**ようにすることで、失敗のリスクを減らすことができます。
:::

ホームディレクトリに移動します。

```sh
$ cd ~
```

<details>
<summary>説明を開きます。</summary>

:::note info
このコマンドを実行すると、**ターミナルがホームディレクトリに移動**します。
|コマンドと引数|意味|
|:--|:--|
|cd|現在のユーザーのホームディレクトリに移動するコマンドです。|
|~ (チルダ)|ホームディレクトリを表す特殊な文字です。|
:::

</details>

## Vim の操作

### Vim を起動

:::note warn
ここで、**vim HelloWorld.java** とターミナルに入力し、Enter キーを押すと Vim が起動します。はじめて Vim を使う場合は、**少し戸惑う**かもしれませんが、落ち着いて手順にしたがって操作しましょう。
:::

以下のコマンドを Ubuntu に入力します。

```sh
$ vim HelloWorld.java
```
このような状態になります。
![vim_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/de97cc83-1a05-34de-691c-479eb6949083.png)

:::note alert
これは Vim の**新規ファイル作成時**に表示される**ノーマルモード**の画面です。ただ、Vim をはじめて使う人にとっては、この状態で何をすればいいか分からず、戸惑うことがあるかもしれません。そこで、以下の手順にしたがって操作していきましょう。
:::

PC のキーボードの **I キーを押します**。すると、以下のような状態に変わります。

### インサートモード
![vim_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/cc47e445-d75d-3769-b037-f5a3529caa31.png)

:::note info
**挿入**という文字が表示されました、これは Vim の**インサートモード**に切り替わった状態です。
:::

この状態で Windows 上の文字列を、Vim が起動して**インサートモード**になった Ubuntu のターミナルにコピペします。

すると Ubuntu のターミナルが以下の状態になります。Windows 上の文字列がコピペできました。
![vim_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/d2aa5747-d53c-528f-40b4-d57d9e976dde.png)

この状態で PC の **Esc キー(左上)を押します**。すると、以下のような状態に変わります。

### ノーマルモード
![vim_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/918c3b9a-b106-7900-4472-ec4902adedc0.png)

:::note info
**挿入**という文字が**消えました**。これは Vim が**ノーマルモード**に切り替わった状態です。
:::

次に PC の **: (コロン) キーを押します**。すると、以下のような状態に変わります。

### コマンドモード
![vim_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/6950d693-1417-e701-8eff-d7d4577708df.png)

:::note info
左下に **:** という文字が表示されました。これは Vim が**コマンドモード**に切り替わった状態です。
:::

この状態のまま PC のキーで **wq とタイプします**。以下のような状態です。
![vim_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/ac757a11-e8b6-27f4-3ab1-0ad15571fead.png)
この状態で PC の **Enter キーを押します**。

これで Ubuntu の Vim で HelloWorld.java ファイルを、Windows 上の文字列からのコピペで作成することができました。

:::note warn
Vim の操作は初め難解に感じるかもしれませんが、何度も使っていくうちに自然と慣れていきます。怖がらずにチャレンジしてみましょう！
:::

### それでも失敗したとき

まず **Esc キーを押し** ましょう、次に **: (コロン)を押し**、**q! とタイプ**します。  
以下のような状態になります。
![vim_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/2f055fbd-7d11-43a1-2b84-b94900ad8ce4.png)
この状態で PC の **Enter キーを押します**。

:::note alert
**:q!** は、Vim のコマンドで**強制終了 (変更を破棄して終了)** を意味します。ファイルを編集中に保存せず終了したい場合で使われます。
:::

### ファイルの内容を全消しする場合

:::note warn
Vim でファイルの内容を変更する際、以下の手順で**文字列を全消し**して、改めて**全体をコピペ**する方法があります。
:::

まず **Esc キーを押し** ましょう、次に **: (コロン)を押し**、**%d とタイプ**します。  
以下のような状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/1afc509e-cfb4-5da9-4e56-c32c49e67abe.png)
この状態で PC の **Enter キーを押します**。以下のような状態になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/209dd7dd-1eeb-88d0-3751-938473cf54fa.png)
さらに、PC のキーボードの **I キーを押します**。すると、以下のような状態に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/8a828bf7-b00c-d1f4-cab4-8376d4b3422b.png)
Vim 上の文字列が消去され、さらに**インサートモード**になったので、再度 Windows 上の文字列を、Vim にコピペできます。

## おさらい

|押すキー|Vim のモード|このモードですること|
|:--|:--|:--|
|**I** (アイ)|インサートモード|**ctrl + C** で Windows 上の文字列を Ubuntu にコピペします。|
|**:** (コロン)|コマンドモード|**wq** コマンドでファイルを保存します。もしくは **q!** コマンドで保存なし強制終了します。もしくは **%d** コマンドで文字列を全消しします。 |
|**Esc**|ノーマルモード|**何もしません!**|

:::note warn
実際の開発では、軽量なテキストエディターである **VS Code** や、**IDE (統合開発環境)** を使用してプログラムを開発することが一般的です。この記事では Windows 上の文字列を Ubuntu へコピペする手順にフォーカスして紹介しました。
:::

https://qiita.com/studio_meowtoon/items/e3aaef417f93afb79066

## まとめ

Ubuntu の Vim で Windows 上のテキストを Ubuntu にコピー＆ペーストする方法を学びました。

:::note warn
Vim を使うことが、Vim を使えるようになる唯一の方法です。Vim を積極的に使って、慣れていくことが大切です。ぜひ挑戦してみてください。
:::

どうでしたか？　Vim の操作には、この他にもたくさんのコマンドがあります。みなさんも少しづつ試してみてください。