存放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
行n
Shift + h
游標由上數下來第n
n
Shift + l
游標由下數上來第n
gg
檔首Shift + g
檔末n
gg
,n
為檔案特定行數w
: 跳到單字或特殊字元e
: 跳到單字最後面b
: 跳到單字前方o
在游標行下方輸入O
在游標那行輸入0
行頭$
行尾n
<ctrl-6>
(或<Ctrl-^>
)切換緩衝區,n
為緩衝區編號gU
,gu
,g~
改變大小寫
重複動作
no
n
為數字,表示重複內容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