存放vim的筆記。
使用
比較差異
vim -d file1 file2
檔案格式轉換(dos to unix)
:set ff=unix
將單行字首轉成大寫
s/\<./\u&/g
出處Capitalize first letter of each word in a selection using vim
遠程編輯
透過scp協議編輯遠端檔案
vim scp://user@ssh.example.com/file1.txt
在vim開啟遠程檔案
:e scp://user@ssh.example.com/file1.txt
作為二進位編輯器 (Patch)
- 使用
vim -b binary開啟檔案 :%!xxd- 修改完成之後輸入
:%!xxd -r :x保存並退出
快捷鍵
:x同:wq的功能,也可以ZZ,無條件退出採用ZQ
hint: 熟悉快捷鍵並使用Macro
- blcok insert
- 先
ctrl+v選取 block 再使用shift+i
- 先
q:: 檢視歷史命令J: join linei進行插入,a在後面添加ctrl + c: 退出模式ctrl + b: 向上1頁ctrl + f: 向下1頁ctrl + u: 向上1/2頁ctrl + d: 向下1/2頁Shift + h游標移到頁面最上方Shift - l游標移到頁面最下方<C-R>重做(redo)yy一行nyy複製n行,數字n也可以為十位百位。ndd剪下n行n>>縮排n行nShift + h游標由上數下來第nnShift + l游標由下數上來第ngg檔首Shift + g檔末ngg,n為檔案特定行數w: 跳到單字或特殊字元e: 跳到單字最後面b: 跳到單字前方o在游標行下方輸入O在游標那行輸入0行頭$行尾n<ctrl-6>(或<Ctrl-^>)切換緩衝區,n為緩衝區編號gU,gu,g~改變大小寫
重複動作
non為數字,表示重複內容n次np貼上n份n+h/j/k/l/w/e/b可以同時移動n個距離- 採用巨集
其他筆記
至于其他筆記非常推薦查看 Moskys Vim Shortcuts
錄製巨集
qa在a暫存器保存巨集,也可使用其他暫存器- 在普通模式按下
q結束錄製 @a使用a暫存器的巨集:reg查詢所有暫存器巨集"ap將暫存器a的內容貼上
搜尋與取代
-
取代:
:[範圍]s/[符合]/[代替]/[模式]- 或者把
/換成'的方法也是很好用的 :s%'aaa'bbb'g
- 或者把
-
搜尋:
/[符合] -
收尋命令:
q:打開命令選單之後透過/找命令
範圍
%全文搜尋.當前游標行位置-2,+2s針對上下兩格的放範圍進行指令
模式(g,c,i)
g全部取代i大小寫忽略
部份取代 (vim regex group)
比方說以下內容
gameA
gameB
gameC
gameD
希望能夠取代成以下內容
mapA
mapB
mapC
mapD
這時可以鍵入以下指令達成此功能。
:%s/\(game\)\(\w\)/map\2/g
\2代表group 2,\1代表group 1。
多buffer取代
:bufdo %s/被取代/取代/ge | update
參見Search and replace in multiple buffers
插件
ycm配置
./install.py --clang-completer --go-completer --java-completer
採用mkdx輔助編寫markdown文件,含有相關鍵綁定。
Modeline
參見手冊,可以對特定檔案做個別的配置,不過因為安全問題1不建議開啟
:h modeline
example 設定檔案格式為markdown
; vim: set ft=markdown :
vim 自動加入 header
如 Bash 或 Python
autocmd BufNewFile *.py 0put =\"#!/usr/bin/env python\<nl>\"|$
autocmd BufNewFile *.sh 0put =\"#!/bin/bash\<nl>\"|$
參考 Automatically inserting a header in vim
環境變數
如果要讀取環境變數,採用 $ 作為前綴就可以讀取。
Linux Editor