-- === 基本設定 === -- デフォルトのシェルとして`pwsh`を登録 local powershell_options = { shell = vim.fn.executable('pwsh') == 1 and 'pwsh' or 'powershell', shellcmdflag = '-NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;', shellredir = '-RedirectStandardOutput %s -NoNewWindow -Wait', shellpipe = '2>&1 | Out-File -Encoding UTF8 %s; exit $LastExitCode', shellquote = '', shellxquote = '', } for option, value in pairs(powershell_options) do vim.opt[option] = value end -- 行番号を表示 vim.opt.number = true -- 内部文字コード vim.opt.encoding = "utf-8" -- 改行コードの種類 vim.opt.fileformat = "unix" vim.opt.fileformats = {"unix", "dos"} -- ヤンクでクリップボードにコピー -- 修正点: "autoselect" を削除し、"unnamed" (または "unnamedplus") のみにする vim.opt.clipboard = "unnamed" -- タイトルを表示 vim.opt.title = true -- スワップファイルを作成しない vim.opt.swapfile = false -- 右端で折り返さない vim.opt.wrap = false -- === インデント設定 (スペース2個) === vim.opt.expandtab = true vim.opt.shiftwidth = 2 vim.opt.tabstop = 2 vim.opt.softtabstop = -1 -- === 外観・カラースキーム === vim.cmd("syntax enable") vim.cmd("colorscheme desert") -- 対応括弧のハイライトを抑える(テーマ切替後も維持) vim.api.nvim_create_autocmd('ColorScheme', { pattern = '*', callback = function() vim.api.nvim_set_hl(0, 'MatchParen', { underline = true, bold = false, bg = 'NONE' }) end, }) -- 初回起動時にも即時適用 vim.api.nvim_set_hl(0, 'MatchParen', { underline = true, bold = false, bg = 'NONE' }) -- `.tex`は全て`latex`として開く vim.g.tex_flavor = "latex" -- === LaTeX スニペット === vim.api.nvim_create_autocmd('FileType', { pattern = 'tex', callback = function() local snippets = { preamble = { '\\documentclass[paper=a4, fontsize=10bp]{jlreq}', '\\usepackage{amsmath, amssymb}', '\\usepackage{unicode-math}', '\\usepackage{bm}', '\\usepackage[margin=30truemm]{geometry}', '\\usepackage{graphicx}', '\\usepackage{float}', '\\usepackage{subcaption}', '\\usepackage{multirow}', '\\DeclareCaptionLabelSeparator{zenspace}{ }', '\\DeclareCaptionFont{ninehalf}{\\fontsize{9.5bp}{12bp}\\selectfont}', '\\captionsetup{labelsep=zenspace, font=ninehalf}', '\\captionsetup{labelsep=zenspace}', '\\usepackage{luatexja-fontspec}', '\\setmainfont{TeX Gyre Termes}', '\\setsansfont{Arial}', '\\usepackage[haranoaji, deluxe, ja-alnum]{luatexja-preset}', '\\usepackage[super]{cite}', '\\renewcommand\\citeform[1]{[#1]}', '\\usepackage{url}', '\\renewcommand{\\UrlFont}{\\fontspec{Tex Gyre Termes}}', }, image = { '\\begin{figure}[H]', '\t\\centering', '\t\\vspace{\\baselineskip}', '\t\\includegraphics[keepaspectratio, width=0.5\\textwidth]{figure/FILENAME}', '\t\\caption{CAPTION}', '\t\\label{fig:IMAGE}', '\t\\vspace{\\baselineskip}', '\\end{figure}', }, twoimages = { '\\begin{figure}[H]', '\t\\centering', '\t\\vspace{\\baselineskip}', '\t\\begin{minipage}[h]{0.45\\linewidth}', '\t\t\\centering', '\t\t\\includegraphics[keepaspectratio, width=\\textwidth]{figure/FILENAME1}', '\t\t\\caption{CAPTION1}', '\t\t\\label{fig:IMAGE1}', '\t\\end{minipage}', '\t\\begin{minipage}[h]{0.45\\linewidth}', '\t\t\\centering', '\t\t\\includegraphics[keepaspectratio, width=\\textwidth]{figure/FILENAME2}', '\t\t\\caption{CAPTION2}', '\t\t\\label{fig:IMAGE2}', '\t\\end{minipage}', '\t\\vspace{\\baselineskip}', '\\end{figure}', }, table = { '\\begin{table}[H]', '\t\\centering', '\t\\vspace{\\baselineskip}', '\t\\caption{CAPTION}', '\t\\label{tab:TABLE}', '\t\\begin{tabular}{ccc} \\hline', '\t\ta & b & c \\\\ \\hline \\hline', '\t\t1 & 2 & 3 \\\\', '\t\t4 & 5 & 6 \\\\ \\hline', '\t\\end{tabular}', '\t\\vspace{\\baselineskip}', '\\end{table}', }, tablemulti = { '\\begin{table}[H]', '\t\\centering', '\t\\vspace{\\baselineskip}', '\t\\caption{CAPTION}', '\t\\label{tab:TABLEMULTI}', '\t\\begin{tabular}{ccc} \\hline', '\t\ta & b & c \\\\ \\hline \\hline', '\t\t\\multicolumn{2}{c}{No1} & \\multirow{3}{*}{No2} \\\\ \\cline{1-2}', '\t\tNo3 & No4 & \\\\ \\cline{1-2}', '\t\t\\multicolumn{2}{c}{\\multirow{2}{*}{No5}} & \\\\ \\cline{3-3}', '\t\t\\multicolumn{2}{c}{} & No6 \\\\ \\hline', '\t\\end{tabular}', '\t\\vspace{\\baselineskip}', '\\end{table}', }, twotables = { '\\begin{table}[H]', '\t\\centering', '\t\\vspace{\\baselineskip}', '\t\\begin{minipage}[h]{0.45\\linewidth}', '\t\t\\centering', '\t\t\\caption{CAPTION1}', '\t\t\\label{tab:TABLE1}', '\t\t\\begin{tabular}{ccc} \\hline', '\t\t\ta & b & c \\\\ \\hline \\hline', '\t\t\t1 & 2 & 3 \\\\', '\t\t\t4 & 5 & 6 \\\\ \\hline', '\t\t\\end{tabular}', '\t\\end{minipage}', '\t\\begin{minipage}[h]{0.45\\linewidth}', '\t\t\\centering', '\t\t\\caption{CAPTION2}', '\t\t\\label{tab:TABLE2}', '\t\t\\begin{tabular}{ccc} \\hline', '\t\t\td & e & f \\\\ \\hline \\hline', '\t\t\t1 & 2 & 3 \\\\', '\t\t\t4 & 5 & 6 \\\\ \\hline', '\t\t\\end{tabular}', '\t\\end{minipage}', '\t\\vspace{\\baselineskip}', '\\end{table}', }, bib = { '\\section{参考文献}', '\\vspace{-3\\baselineskip}', '\\renewcommand{\\refname}{}', '\\begin{thebibliography}{99}', '\t\\bibitem{CITEKEY} 日本機械学会 編,伝熱ハンドブック (1979), p. 123, 丸善.', '\t\\bibitem{CITEKEY} [5] レイノルズ応力輸送方程式のモデルについて, 日本機械学会 流体工学部門 ニュースレター (online), , (参照日 2024年12月24日).', '\t\\bibitem{CITEKEY} 武藤真和,小林和也,西脇誠悟,玉野真司,感圧ゲル内部のせん断応力場の可視化に向けた高速度光弾性法の開発, 日本機械学会論文集,Vol. 91, No. 942 (2025), pp. 1–17.', '\\end{thebibliography}', }, align = { '\\begin{align*}', '\ty &= ax + b \\\\', '\t&= cx + d', '\\end{align*}', }, enum = { '\\begin{enumerate}', '\t\\item 1つ目', '\t\\item 2つ目', '\t\\item 3つ目', }, item = { '\\begin{itemize}', '\t\\item 1つ目', '\t\\item 2つ目', '\t\\item 3つ目', }, } -- トリガーワードを検出して展開する関数 local function expand_snippet() local line = vim.api.nvim_get_current_line() local col = vim.api.nvim_win_get_cursor(0)[2] local word = line:sub(1, col):match('%S+$') if word and snippets[word] then vim.schedule(function() local row = vim.api.nvim_win_get_cursor(0)[1] - 1 local cur_line = vim.api.nvim_get_current_line() local cur_col = vim.api.nvim_win_get_cursor(0)[2] local start_col = cur_col - #word vim.api.nvim_buf_set_text(0, row, start_col, row, cur_col, snippets[word]) local new_row = row + #snippets[word] - 1 vim.api.nvim_win_set_cursor(0, { new_row + 1, 0 }) end) return '' -- Enterによる改行をキャンセル end return '\n' -- 通常の改行 end vim.keymap.set('i', '', expand_snippet, { buffer = true, expr = true }) -- Enterキーで展開 end, }) -- Escを2回連打で抜ける場合 vim.keymap.set('t', '', '')