3月に「Visual Studio 2017」が公開されました。
Visual Studio で、外部ツールとしてvimを使用することができるので設定します。
環境
Visual Studio Community 2017
vim80-kaoriya
外部ツールの設定方法
Visual Studio のメニューバーから「ツール」->「外部ツール」を選択する。
「追加」をクリックしてメニューを追加する。
追加したメニューを選択してタイトルを編集する。
タイトルはわかりやすい名前をつけると後でわかりやすいです。
コマンドには、外部ツールとして使用したい外部ツールのパスを入力します。
今回はgvimを使用したいので、「gvim.exe」のパスを指定しました。
引数には、「$(ItemPath) +$(CurLine)」を指定しました。
“+”の前に半角スペースを入れないと正しく動作しません。
初期ディレクトリには、「$(ItemDir)」を指定しました。
設定例
タイトル gvim
コマンド C:\vim80\gvim.exe
引数 $(ItemPath) +$(CurLine)
初期ディレクトリ $(ItemDir)
外部ツールの引数(一部抜粋)
引数 説明
$(ItemPath) 現在のファイルの完全なフィある名(ドライブ+パス+ファイル名)
$(ItemDir) 現在のファイルのディレクトリ(ドライブ+パス)
$(ItemFilename) 現在のファイルのファイル名(ファイル名)
$(CurLine) コードウインドウ内の現在カーソル行位置
$(BinDir) 作成中のバイナリの最終的な場所
その他の引数についてはMicrosoftのリファレンスを参照してください。
外部ツールの起動方法
ソースファイルを編集中に、Visual Studio のメニューバーから「ツール」->「gvim」を選択する。
ショートカットキーを割り当てすると、起動が早くできるようになります。
ショートカットキー割り当て方法
Visual Studio のメニューバーから「ツール」->「外部ツール」を選択する。
メニューの内容の中で、設定した「gvim」を何番目に設定してあるか確認して、外部ツールを閉じる。
今回は、4番目に設定されていました。
Visual Studio のメニューバーから「ツール」->「オプション」を選択する。
オプションボックスの中から、「環境」->「キーボード」を選択する。
「以下の文字列を含むコマンドを表示」の入力欄に「外部コマンド」と入力すると、外部コマンドが表示されるので、先ほど設定した順番のものを選択する。
外部コマンドのショートカットキーは、最大で24個まで設定できます。
(今回「gvim」は、4番目に設定したので、「ツール,外部コマンド4」を選択します。)
「使用する場所」を、「テキストエディター」に設定します。
「ショートカットキー」のテキストボックスを選択して、割り当てするキーを押して、「割り当て」をクリックします。
「OK」をクリックして決定します。
外部ツールでvimを割り当てることで、普段使用している環境で作業できるため作業効率が上がります。
常にVSだけで開発しているなら、わざわざ外部ツールの設定などしなくても良いと言われてしまうかもしれませんが・・・
作者別: memo
構文ハイライトの設定方法
vimで構文ハイライトを使用してテキストの一部をハイライトすることで、内容が見やすくなります。
構文ハイライトの設定を有効にする
.vimrcに、下記設定を追記して、vimを再起動する。
1 |
syntax enable |
カラースキームの設定をします。
デフォルトでインストールされているカラースキームがあるのでその中から選択します。
1 |
:colorscheme [カラースキーム名] |
現在選択が可能なカラースキームは、vimでコマンドとして[:colorscheme ]を入力してから、[ctrl+d]を押すと一覧が表示されます。
※:colorscheme の最後に半角スペースを入れないとうまくいきません。
現在使用しているカラースキームを確認する時は、vimで以下のコマンドを実行します。
1 |
:colorscheme |
デフォルトのカラースキームにお気に入りの物がない場合は、好きなカラースキームをインストールして使用することができます。
また、KaoriYa版vimを使用している場合は、[編集->色テーマ選択]の中から選択すると変更できる
カラースキームのハイライトは、以下のコマンドで確認できます。
1 |
:highlight |
Git で過去のコミットのコメントを修正する方法
Git を使用してバージョン管理を行っていますが、過去に行ったコミットを見ているとコメント内容が間違っていることが時々あります。
本来ならば間違いの無いように入力してコミットするべきですが・・・
今まではそのまま放置していましたが、後で見直して勘違いしてしまうコメントがあるので修正することにしました。
まずは修正したいコミットを確認する。
1 |
$ git log |
コマンドを実行すると、「commit 34e38b3・・・・・」と表示されるので、変更したいコメントの “commit” の後に表示されている番号を確認する。
git rebase の [ -i ] オプションを使用して、先ほど確認した修正したいコミット番号を [ -i ] オプションの後に入力する。
1 |
$ git rebase -i [コミット番号] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
pick e89619 commit update pick b456a38 commit remove pick 03f54e0 commit sdd # Rebase 34e38b3..03f54e0 onto 34e38b3 (3 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # d, drop = remove commit # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out |
入力したコミット番号よりも新しいコミットの一覧が表示される。
表示された一覧から、変更したいコミットの [ pick ] を [ edit ] に変更して保存する。
git commit の [ –amend ] オプションを指定してコミットコメントを修正する。
コメントの修正方法は、以下の様にして変更する。
直接コメントを入力する場合
1 |
$ git commit --amend "新しいコミットコメント" |
テキストエディタを起動して入力する場合
1 |
$ git commit --amend |
このコマンドを実行すると、テキストエディタが起動するので、コメントを修正して保存する。
git rebase の [ –continue ] オプションを使用して最新のコミットに戻す。
1 |
$ git rebase --continue |
既にコミット内容をリモートリポジトリにプッシュしている場合は以下の様にプッシュする。( master ブランチの場合)
1 |
$ git push -f origin master |
この作業を行うことで、コミットのコメントを修正できます。
gccでコンパイルしたときの文字化け対策(2)
gccで表示する文字の文字化け対策です。
gccでコンパイルする人以外は参考にならないと思います。
文字コードsjisのソースファイルに含まれる、「ソ」・「表」などが文字化けしてしまう症状が出ました。
“表示ソフト”と表示するソースファイルを、gccでコンパイルすると「warning: unknown escape sequence:」と警告が出ますが、コンパイルは成功しています。
生成した実行ファイルを実行すると、文字化けしてしまい読み取ることができません。
文字化けする原因としてはgcc特有のもので、ソースコードに含まれる一部の2バイト文字に対応していないとのことです。
今回の場合ですと、sjisの「ソ」は16進数で「83 5c」で表されるので、「5c」の部分をエスケープシーケンスの「\」として解釈されてしまうたため、未知のエスケープシーケンスが含まれますと警告が出るようです。
同じように、「表」「貼」「能」「予」「禄」等もsjisの文字コードに「5c」が含まれるので文字化けします。
文字コードsjisを使用する場合、2バイト目にエスケープシーケンスと同じ値が含まれる場合は、入力した文字の後ろに「\」を入れることで正常に表示することができます。
例
“表示ソフト”と表示したい場合は、”表\示ソ\フト”と入力する。
「\」を入れることで、コンパイル時に警告が出なくなり、文字化けせずに表示できるようになります。
この問題は、gccでコンパイルする上では避けようがないもののようです。
gccでコンパイルしたときの文字化け対策
C言語で記述したソースファイルをgccでコンパイルした実行ファイルを実行すると日本語が文字化けしてしまい表示が読めなくなってしまう。
文字化けが発生する原因としては、使用しているターミナル(terminal)の文字コードとソースファイルの文字コードが一致していない場合発生することが多いそうです。
文字化けしない対策として、ソースファイルの文字コードを「sjis」にしたところgccでコンパイルした実行ファイルで文字化けが直りました。
今まで文字コードをあまり気にしませんでしたが、gccを使用する上では気をつけないとならないみたいです。
VC++はテキストエディタが統合されているので気にしなくても問題がなかったのかも・・・
.bashrcの設定内容を読み込む
.bashrcを編集後に設定内容は再ログインするまで反映されないが、すぐに読み込みしたい場合は以下のコマンドで再読込を行う。
1 |
$ source ~/.bashrc |
.batファイルを実行するとnullのファイルが作成されてしまう
バッチファイルにnullコマンドを記載して実行すると、実行したフォルダ内にnullファイルが作成されてしまいました。
原因を調べてみると、Windowsのバッチファイルには「null」ではなく「nul」と入力しないとならないみたいです。
こんな単純なことですが、結構な時間はまってしまいました・・・
現在開いているファイルの文字コードを確認する
vimで作成するファイルは基本的にutf-8で自動保存されるが、他のソフトで編集したファイルや頂いたデータなどに追記するときなどに現在の文字コードを確認したい時がある。
vimで現在開いているファイルの文字コードは以下のコマンドで確認できます。
1 |
:set enc? |
確認して何かしたいわけではないですが、ファイルを送った先で読めないなど言われたときに確認できると助かります。
グループポリシーの管理用テンプレート警告
Windows10のグループポリシーを設定するため、既存のサーバー(Windows Server 2008 R2)を「Administrative Templates (.admx) for Windows 10 and Windows Server 2016」の.admxに更新したら、グループポリシーの設定を変更するときに警告が表示されるようになってしまった。
以下、表示された警告です。
管理用テンプレート
解析中にエラーが発生しました。
名前空間 ‘Microsoft.Policies.WindowsStore’ は、既にストア内の別のファイルのターゲット名前空間として定義されています。
ファイル
¥¥[domain.local]¥SysVol¥[domain.local]¥Policies¥PolicyDefinitions¥winstoreui.admx、行 4、列 80
※[domain.local]は、各環境の名前に置き換えて下さい。
本エラーは、警告メッセージをOKして閉じれば無視できるが、ポリシーの管理画面の設定で警告が表示されて内容が表示されないため解決しておきたい。
対策
- PolicyDefinitions内の「winstoreui.admx」を削除する。
- PolicyDefinitions内の「WindowsStore.admx」を「winstoreui.admx」にリネームする。
- PolicyDefinitions¥ja-jp内の「winstoreui.adml」を削除する。
- PolicyDefinitions¥ja-jp内の「windowsstore.adml」を「winstoreui.adml」にリネームする。
※ファイルは削除せず別ディレクトリに移動させておき、問題ないことが確認されてから削除した方が安全です。
対策実施後に、グループポリシーの設定を変更すると警告が発生しません。
今回はこの方法で解決できました。
リモートリポジトリからクローンする
ネットワーク上にあるリモートリポジトリからリポジトリをローカルにクローンして作業で使用することができます。
リモートリポジトリからカレントディレクトリにクローンする方法です。
作成されるディレクトリ名は、デフォルトの名前になります。
1 |
$ git clone [remote URL] |
同じ名前のリポジトリがあるとエラーが発生します。
リモートリポジトリからカレントディレクトリにクローンするディレクトリ名を指定してクローンする方法です。
この方法でクローンするとクローンするディレクトリの名前を指定でます。
1 |
$ git clone [remote URL] [nwe directory name] |