序文:
このブログは vim の使用最適化について簡単に紹介したものです。vim の使用テクニックについてさらに詳しく知りたい場合は、「Vim Practical Tips」の第 2 版を読むことを強くお勧めします。
コードを記述するとき、コードの読みやすさと保守性を向上させるために、ファイルの先頭に作成者、日付、バージョン番号などの情報ヒントを追加することがよくあります。この記事では、Vim エディターに情報プロンプトを自動的に追加する機能を実装する方法について説明します。
~/.vimr 参照設定は最後に提供されており、これによりコード作成速度が向上します (例: 自動インデント、自動補完など)。
構成:
Vim エディターを使用する場合、いくつかの構成を使用して、新しいファイルの作成時に情報プロンプトを自動的に追加できます。設定方法は以下で詳しく説明します。(計2ステップ)
ステップ 1: `.vim` または `.vimrc` ディレクトリがすでに存在するかどうかを確認します。そうでない場合は、次の手順に従って作成します。
1. ターミナルを開き、ユーザーのホーム ディレクトリを入力します。
cd ~
2. `.vim` ディレクトリを作成します。
mkdir .vim
3. 「.vim」ディレクトリに入ります。
cd .vim
4. 「templates」ディレクトリを作成します。
mkdir templates
5. 「templates」ディレクトリに入ります。
cd templates
6. `skeleton.c` を作成します: (テンプレート ファイル)
vim skeleton.c
7. 次のテンプレートの内容を `skeleton.c` にコピーします (実際の状況に応じて変更できます)。
/*
* Filename: %FILENAME%
* Author: %AUTHOR%
* Date: %DATE%
* Version: %VERSION%
*
* Description: The purpose of this code.
*/
#include <stdio.h>
int main()
{
return 0;
}
ステップ 2 : Vim の設定ファイル `~/.vimrc` を変更し、対応する設定を追加します。ファイルが存在しない場合は、次の手順に従って作成します。
1. ターミナルにユーザーのホーム ディレクトリを入力します。
cd ~
2. `.vimrc` ファイルを作成します。
touch .vimrc
3. テキスト エディタ (Vim など) を使用して `.vimrc` ファイルを開きます。
vim .vimrc
`~/.vimrc` ファイルでは、テンプレート内のプレースホルダーを置き換える関数を定義し、新しいファイルの作成時にこの関数を呼び出すことができます。以下は `~/.vimrc` 設定の例です: (次の情報を追加するだけです)
" 获取当前用户名
let s:current_user = $USER
" 设定默认版本号
let s:default_version = "1.0"
function! ReplaceTemplateVariables(timer_id)
let l:current_date = strftime("%Y-%m-%d")
let l:current_filename = expand('%:t')
" 替换对应的占位符
execute "%s/%DATE%/" . l:current_date . "/g"
execute "%s/%FILENAME%/" . l:current_filename . "/g"
execute "%s/%AUTHOR%/" . s:current_user . "/g"
execute "%s/%VERSION%/" . s:default_version . "/g"
" 设置光标位置
call cursor(13, 1)
endfunction
" 安装 Timer 插件(如果尚未安装)
if !exists('g:loaded_timer') && !exists('g:did_timer_plugin')
silent! timer defer timer_start 1
let g:did_timer_plugin = 1
endif
autocmd BufNewFile *.c 0r ~/.vim/templates/skeleton.c | call timer_start(100, 'ReplaceTemplateVariables')
この構成では、まず現在のユーザー名を取得し、デフォルトのバージョン番号を設定します。次に、新しいファイルが作成されるときに呼び出される関数 `ReplaceTemplateVariables` が定義されます。この関数は現在の日付とファイル名を取得し、この情報を置き換えます。
テスト:上記の設定が完了すると、正常な `vim file.c` が検証できます。
リファレンス (~/.vimrc 構成):
以下は私のプログラミング時の .vimrc 設定です。自分の習慣に従って徐々に改善してください (ここでは参照のみ)
" 获取当前用户名
let s:current_user = $USER
" 设定默认版本号
let s:default_version = "1.0"
function! ReplaceTemplateVariables(timer_id)
let l:current_date = strftime("%Y-%m-%d")
let l:current_filename = expand('%:t')
" 替换对应的占位符
execute "%s/%DATE%/" . l:current_date . "/g"
execute "%s/%FILENAME%/" . l:current_filename . "/g"
execute "%s/%AUTHOR%/" . s:current_user . "/g"
execute "%s/%VERSION%/" . s:default_version . "/g"
" 设置光标位置
call cursor(10, 1)
endfunction
" 安装 Timer 插件(如果尚未安装)
if !exists('g:loaded_timer') && !exists('g:did_timer_plugin')
silent! timer defer timer_start 1
let g:did_timer_plugin = 1
endif
autocmd BufNewFile *.c 0r ~/.vim/templates/skeleton.c | call timer_start(100, 'ReplaceTemplateVariables')
" 设置编码为 UTF-8
set encoding=utf-8
" 设置制表符宽度为4个空格
set tabstop=4
set shiftwidth=4
" 将制表符自动转换为空格
set expandtab
" 显示行号、标尺和相对行号
set number
set ruler
set relativenumber
" 自动缩进和智能缩进
set autoindent
set smartindent
" 显示匹配的括号
set showmatch
" 开启自动换行
set wrap
" 高亮显示当前行
set cursorline
" 代码折叠设置
" 单个折叠/打开(切换):zc/zo(za)
" 全部折叠/打开:zM/zR
set foldmethod=indent "使用缩进来折叠代码
set foldlevel=99 "默认打开所有折叠
" 开启搜索时忽略大小写
set ignorecase
" 搜索时自动高亮匹配项
set hlsearch
" 自己设置快捷键,根据自己习惯设置即可
nmap H ^i
nmap L $a
nmap J 3j
nmap K 3k
" 自动补全括号,根据自己的习惯设置即可
inoremap ( ()<Left>
inoremap [ []<Left>
inoremap { {<CR>}<Esc>O
inoremap " ""<Left>
inoremap ' ''<Left>
inoremap ` ``<Left>
" 删除成对符号内的全部内容,保留符号
nnoremap di( di(bi<Right>
nnoremap di[ di[bi<Right>
nnoremap di' di'bi<Right>
nnoremap di" di"bi<Right><Right>
nnoremap di` di`bi<Right>
" 启用文件类型检测
filetype plugin on
filetype indent on
要約:
実際の状況に応じて、段階的にコピーして実行できます。vimコンテンツをコピーするときは (最初に編集モードに入る必要があります。たとえば、i を押します)、質問がある場合は、コメントエリア。
参考書:
「Vim 実践的なヒント」 -->[米国] Drew Neil 著