Notepad++からVS Codeへ
今まで様々なテキストエディタを試してきて, 満足するエディタはNotepad++
だけだった.
だが, 最近VS Code
と拡張機能
の組み合わせにより, 同等の機能が実現できたため, 入力補完が優秀なVS Code
へ移行した.
Notepad++
これまで, テキスト編集からプログラミング, LaTeXまで全てNotepad++でやってきた.
NppExec
というプラグインが優秀で, Notepad++にターミナル環境を与えてくれていた.
さらに, Follow ${CURRENT_DIRECTORY}
という神がかったオプションまであった.
この機能は, 下のターミナルのディレクトリが, 現在開いているタブの階層になるというものだ.
しかもF6
キーで登録したコマンドを実行可能だった.
なので, いつもmake
を登録しておき, カレントディレクトリを気にすることなくF6
を押すだけでコンパイルができていた.
LaTeX用Makefile
カレントディレクトリの全ての.tex
ファイルをコンパイルする.
FILE = $(wildcard *.tex)
PDF = $(FILE:.tex=.pdf)
DVI = $(FILE:.tex=.dvi)
.PHONY:run
run:$(PDF) $(DVI)
%.pdf: %.dvi
dvipdfmx $<
# cmd /c start $@
%.dvi: %.tex
platex $<
# pbibtex $*
#クリーンして実行
.PHONY: all
all: clean run
#クリーン
.PHONY:clean
clean:
rm -f $(PDF) $(DVI)
-
cmd /c start $@
のコメントアウトを外せば, コンパイル後PDFを開く -
pbibtex $*
は, .bib用
C++用Makefile
cppコンパイル用.
###################################################
# Makefile (*.cppをコンパイルする場合)
# コンパイルしたいソースがあるフォルダと同じところに置く
# ディレクトリ階層図
# this
# |--- *.cpp (コンパイルしたいソースファイル)
# |--- Makefile
# |--- run.exe (生成される実行ファイル)
# |--- obj (生成されるフォルダ)
# |--- *.o (生成されるオブジェクトファイル)
# |--- *.d (生成される依存関係ファイル)
#
# 実行コマンド
# make (更新されたファイルのみコンパイル)
# make all (クリーンしてビルド)
# make clean (クリーン)
###################################################
AR = ar
ARFLAGS = rus
CXX = g++
CXXFLAGS = -g -MMD -MP -Wall -Wextra -Winit-self -Wno-unused-parameter -std=c++11 -O3
RM = rm -f
LDFLAGS =
LIBS =
INCLUDE =
#実行ファイル
TARGET = ./run.exe
#オブジェクトファイル保存フォルダ
OBJDIR = ./obj
#ソースファイル
SOURCES = $(wildcard *.cpp)
#オブジェクトファイル
OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.cpp=.o))
#依存関係ファイル
DEPENDS = $(OBJECTS:.o=.d)
#実行ファイル作成
$(TARGET): $(OBJECTS) $(LIBS)
$(CXX) -o $@ $^ $(LDFLAGS)
#ソースファイルをコンパイル
$(OBJDIR)/%.o: %.cpp
@if [ ! -d $(OBJDIR) ];\
then echo "mkdir -p $(OBJDIR)";mkdir -p $(OBJDIR);\
fi
$(CXX) $(CXXFLAGS) $(INCLUDE) -o $@ -c $<
#クリーンしてビルド
.PHONY: all
all: clean $(TARGET)
#クリーン
.PHONY:clean
clean:
$(RM) $(OBJECTS) $(DEPENDS) $(TARGET)
-include $(DEPENDS)
※MakefileのインデントはすべてTabです.
コピペするとSpace4つになるので, \t
に置換してください.
- 参考文献: シンプルで応用の効くmakefileとその解説
VS Code
VS Codeにはもともとターミナルがついているが, nppExec
のような現在のタブに従うような機能はない.
Ctrl+@
でターミナルを開くと, 特に設定していない場合, $HOME
で開くだろう.
しかし, 拡張機能terminal-command-keys
を使えば, nppExec
に近いことが行える.
拡張機能をインストール後, Ctrl+K, Ctrl+S
のkeybindings.json
に以下を追加.
{
"key": "F5",
"command": "terminalCommandKeys.run",
"args": {
"cmd": "cd `dirname \"${file}\"`;make"
}
},
{
"key": "ctrl+F5",
"command": "terminalCommandKeys.run",
"args": {
"cmd": "cd `dirname \"${file}\"`"
}
},
{
"key": "shift+F5",
"command": "terminalCommandKeys.run",
"args": {
"cmd": "!!"
}
},
この例ではF5
を押すと, カレントタブのディレクトリでmake
を実行する.
Ctrl + F5
で, カレントタブのディレクトリに移動できる.
このようにしておけば, ターミナルのディレクトリを意識することなくmake
を実行できる.
Shift + F5
で, 直前のコマンドを実行できる. (!!
: 直前のコマンド実行を表す. )
また, 現在のキャレットがエディタ側になく, ターミナル側にある場合にも実行を可能にするには, Ctrl+,
でsettings.json
に以下の設定が必要.
"terminal.integrated.commandsToSkipShell":
の項目のリストに, "terminalCommandKeys.run"
を追加.
その他の設定
settings.json
- 文字コード自動判定ON
"files.autoGuessEncoding": true,
- LaTeX Workshop自動コンパイルOFF
"latex-workshop.latex.autoBuild.onSave.enabled": false,
"latex-workshop.latex.autoBuild.run": "never",
- Cygwin terminalへ変更
"terminal.integrated.shell.windows": "C:\\cygwin64\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"],
- スペース表示
"editor.renderWhitespace": "all",
- フォントサイズ変更
"editor.fontSize": 13,
"terminal.integrated.fontSize": 13,
- タイトルバーにフルパス表示
"window.title": "${activeEditorLong} - VS Code",
keybindings.json
- タブ切り替えで, 見た目順に動くようにする (履歴順解除)
{
"key": "ctrl+tab",
"command": "workbench.action.nextEditor"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.previousEditor"
},
拡張機能
- Bracket Pair Colorizer
- C/C++
- Japanese Language Pack for VS Code
- LaTeX Workshop
- Matlab
- Python
- Rainbow CSV
- Reopen Closed Tab
- terminal-command-keys
- Python Docstring Generator
- TabNine
- Remote ssh