vim 視窗分割

vim-split-window雖說tmux很好用,不過vim本身內建視窗切割功能了,好像沒必要因此開多個shell跟vim浪費記憶體,還是記一下vim常用的分割視窗指令:

開新水平視窗:
:new
開新垂直視窗:
:vnew

水平切割後開起現有或指定檔案:
<code>:sp</code> (split)
垂直切割後開起現有或指定檔案:
<code>:vsp</code> (vsplit)
這兩個命令後面接檔名(記得前面要一個空格)會直接打開對應的檔案~

另外vim的分割視窗操作預設hot key是Ctrl + w, 也可以用熱鍵來操作:

水平切割視窗:
<Hot key> s
垂直切割視窗:
<Hot key> v

在分割視窗之間切換/移動焦點:
<Hot key> k  或  <Hot key> ↑
<Hot key> j  或  <Hot key> ↓
<Hot key> h  或  <Hot key> ←
<Hot key> l  或  <Hot key> →
(把英文字母改成大寫則可移動到最上最下最左最右)

把目前的分割視窗加大:
<Hot key> +
把目前的分割視窗縮小:
<Hot key> –
把目前同一行/列的分割視窗高/寬平均:
<Hot key> =
把目前的分割視窗放到最大(寬or高):
<Hot key> _
<Hot key> |
把目前的分割視窗用一個新的分頁(tab)開啟:
<Hot key> T

要強迫自己習慣一下~

在 VIM 裡面同時對多個檔案做搜尋以及取代的動作

偶爾會用到一次…但每次都想不起來,做個筆記:

:bufdo %s/pattern/replace/ge | update

bufdo
就是要vim在所有buffer,也就是所有開啟的檔案裡面做這件事情

%s/pattern/replace/g
沒什麼好說的…

e
是忽略找不到字串時的error

update
是針對有修改(取代)的檔案做存檔的動作

詳細用法以及 Refference:
Search and replace in multiple buffers

讓VIM存檔時自動去除行尾的空白

PHP規範之一的PSR-2(前輩翻譯)裡面的2.3有規範了一點:

There MUST NOT be trailing whitespace at the end of non-blank lines.
 
意為非空白行的行尾不可有空白
 
要處理這種瑣碎的細節其實很麻煩,尤其code一多、以前又沒按照規定來走現在卻要修正的時候
 
這邊有前輩截錄了一段程式碼可以用來處理這種問題,也順便處理了自動刪除檔案結尾N行的空白行
 

” Remove trailing whitespace when writing a buffer, but not for diff files.
” From: Vigil
function RemoveTrailingWhitespace()
if &ft; != “diff”
let b:curcol = col(“.”)
let b:curline = line(“.”)
silent! %s/s+$//
silent! %s/(s*n)+%$//
call cursor(b:curline, b:curcol)
endif
endfunction
autocmd BufWritePre * call RemoveTrailingWhitespace()

只要寫入vimrc裡面就可以了!


如果不想要自動刪除檔案結尾N行的空白行,請把上面橘色標記的code註解或是拿掉!