慣用 vim 設定檔

Tab 縮排

set tabstop=4
set shiftwidth=4
" 避免把 tab 變成 space
set noexpandtab

自動縮排

set ai!
set smartindent

自定義界面

" 顯示行號
set nu
" 高亮搜尋結果
set hlsearch
" 高亮游標所在行
set cursorline
hi CursorLine cterm=none ctermbg=240 ctermfg=White
" 語法高亮
syntax on

輸入偵測

" 猜測檔案編碼順序
set fileencodings=utf-8,utf-16,big5,cp950,gb2312,cp936,latin1

區塊折疊

set foldmethod=indent
set foldlevel=1
set foldlevelstart=1
autocmd BufWinEnter * let &foldlevel = max(map(range(1, line('$')), 'foldlevel(v:val)'))

簡便執行

" Rust 直接執行
command! PlayRust write !cargo play -i --stdin
" JS 直接執行
command! PlayJS write !node

整合開發

if $VIM_IDE == "1"
	packadd ale

	" Ctrl+h 可以查看游標所在函數的說明,或者變數的型態 (顯示在狀態列)
	noremap <C-h> :ALEHover<CR>
	" :refs 可以查看游標所在函數或變數在哪些地方被引用
	cnoreabbrev refs ALEFindReferences
endif

套件 ale

來源: https://github.com/dense-analysis/ale
安裝至 ~/.vim/pack/git-plugins/opt/ 以實現選擇性載入

Related posts

Shell 語法筆記

從多個 pipeline 輸入資料

# 以 diff 示範
diff <(ls dir1) <(ls dir2)

Rust 標準庫 Trait 速查

Rust 的 trait 實在太重要太豐富了...有時想不起來還不容易查...

資料結構特性

std::marker::Sized :用於資料結構泛型 ( S<T> ),表示編譯期可以確定大小!Sized 表示編譯期無法確定大小?Sized 表示編譯期能不能確定大小都無所謂std::marker::Copy :表示可以直接複製記憶體來複製資料結構在資料結構前面加上 # 來自動實現實現此特性就可以用 #[derive(Copy,...

MacOS VPN 路由設定

使用 root 權限新增腳本 /etc/ppp/ip-up ,記得 chmod +x:

#!/bin/bash
# 參數說明參考:https://superuser.com/questions/4904
# $1 是VPN 使用的介面名稱,比如 ppp0
# $2 沒查到
#...

反人性 SQL 速查

存在則取得 ID,否則插入

-- 假設 `pk` 是 Primary Key, `column2` 是 Unique Key
INSERT INTO `table`...

好用 bash 設定

SSH 一次性 IP

alias tssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null" '
alias tscp='scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"...

指令速查 – 文字處理

複製貼上

移除 # 註解:sed -e '/^*#/d'取得當前腳本所在目錄:參考:https://stackoverflow.com/questions/59895/

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE}" )" &> /dev/null &&...

Leave a Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *