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