標籤:java 使用 io strong 檔案 ar 代碼 amp
在vim中高亮關鍵字
syntax enable 可以高亮關鍵字:一般後面還要在跟一個syntax on開啟文法高亮
syntax clear 清除關鍵字高亮
在secureCRT不是xterminal模式的時候,試了一下,沒起作用啊,如果是xterminal模式的時候是會起作用的
在vim中尋找
/ 後面跟要尋找的字串:從當前游標位置向上搜尋
? 後面跟要尋找的字串:從當前游標位置向下搜尋
n 找下一個
N 找上一個
清除並重畫螢幕
vim快速鍵定製
- 對於鍵盤符號,可以使用:help key-notation查看協助
定製編輯環境
set命令用來定製編輯環境。
set showmode 當vi處在輸入模式下時顯示提示資訊
set sm 即時顯示配對的)或}
set ts=n 把定位字元設定為n(預設為8)
set ai 下一行從前一行的縮排位置開始
set number 在編輯器中顯示行號
set nonu 取消在編輯器中的行號顯示
set hlsearch 高亮顯示搜尋到的字串
set incsearch 輸入字串就馬上顯示匹配點
set ruler 尺規,用於顯示光線標位置的行號和列號,逗號分隔。每個視窗都有自己的尺規。如果視窗有狀態行,尺規在那裡顯示。否則,它顯示在螢幕的最後一行上。
set cindent:cindent控制縮排量是通過shiftwidth選項的值,而不是通過tabstops的值,shiftwidth的預設值是8
set shiftwidth:改變shiftwidth的值
set helplang=cn :vim協助文檔無法顯示中文時,加入這句試試
set encoding=utf-8:
colo murphy:有的時候使用vim開啟檔案時,顯示的顏色不適合閱讀,可以使用這條命令將配色改成這種黑底
我在gvim中使用了上面的方法進行了設定,但是貌似沒有起到作用,不知道是我使用得不對還是另有原因
移動游標
h 游標左移
l(或空格鍵) 游標右移
k(或[Ctrl+p]) 游標上移
j(或[Ctrl+n]) 游標下移
[Ctrl+f] 向前翻頁
[Ctrl+b] 向後翻頁
[Ctrl+d] 向前翻半頁
[Ctrl+u] 向後翻半頁
1G 跳到檔案首
40G 跳到第40行
G 跳到檔案尾
[Ctrl+g] 顯示當前行號及檔案的百分比
Ctrl +E scroll down
Ctrl +Y scroll up
在一行內移動游標
B、E和W命令的作用與b、e和w的作用一樣,只是後者忽略了標點符號。
b 向後移動到單詞首
e 向前移動到單詞尾
w 向前移動到單詞首
0或| 移動到行首
30| 移動到第30列
^ 移動到本行的第一個單詞的首字元
$ 移動到行尾
: num 跳轉到指定行號
插入文本
i 在游標的左側插入字元
20i-[Esc] 插入20個連字號
I 在行首插入字元
a 在游標的右側添加文本
A 在行尾添加文本
o 在當前行下面插入一空行
O 在當前行上面插入一空行
選擇文本
ve:選擇整個單詞
yw:複製游標所在的單詞
5yl:複製5個字元的輸入
刪除和移動文本
x 刪除游標所在的字元
6x 刪除游標位置的字元以及右側的5個字元
X 刪除前一個字元
dd 刪除當前行
4dd 刪除4行
dw 刪除一個單詞
d0 刪除到行首
d$ 刪除到行尾
d 刪除一個地區(只用於vim)
p 把被剪下的文本粘貼到下面(整行)或右側(部分行)
P 把被剪下的文本粘貼到上面(整行)或左側(部分行)
add 把當前行粘貼到緩衝區a裡
ap 把緩衝區a裡的內容粘貼到當前位置
J 把當前行於下一行合并為一行
xp 調換兩個字元的位置(其實它是刪除一個字元,然後再又粘貼一個字元)
一些對程式員特別有用的快速鍵
[[ = 移動到前一個行首的{字元上,等價於?^{:其實就是尋找上一個函數
]] = 移動到下一個行首的{字元上,等價於/^{:其實就是尋找上一個函數
[] = 移動到前一個行首的}字元上,等價於?^} :用起來感覺不是很方便
][ = 移動到下一個行首的}字元上,等價於?^}:用起來感覺不是很方便
f = 到前一個空行上
g = 到下一個空行上
gd = 到當前局部變數的定義處(當前的意思是游標停留其上的單詞).:使用之後所有與當前游標所在的單詞匹配上的單詞都高亮了
gD:跳轉到變數定義的地方
* = 到與當前單詞相同的下一個單詞上
# = 到與當前單詞相同的上一個單詞上
‘‘ = 到上次游標停靠的行
%:可以讓游標移動到與他相匹配的括弧上去:這個非常有用
>增加縮排,x>表示增加以下x行的縮排
<減少縮排,x<表示減少以下x行的縮排
syntax enable + syntax on開啟文法高亮
修改文本
rch 把游標位置的字元替換為ch
R 替換游標右邊的文本
s 把游標所在的字元替換為任意個字元
S 替換整行內容
cw 修改一個單詞
c 修改地區裡的文本(vim)
~ 改變所掃描的或地區裡的字母的大小寫
!tr‘[a-z]‘‘[A-Z]‘把地區裡的字母轉換為大寫(vim)
!tr‘[A-Z]‘‘[a-z]‘把地區裡的字母轉換為小寫(vim)
vim 的tab相關
vim 從 vim7 開始加入了多標籤切換的功能, 相當於多視窗。之前的版本雖然也有多檔案編輯功能, 但是總之不如這個方便啦。
:tabnew [++opt選項] [+cmd] 檔案 : 建立對指定檔案新的tab
:tabe 在一個新tab中開啟指定的檔案
:tabc 關閉當前的tab
:tabo 關閉所有其他的tab
:tabs 查看所有開啟的tab
:tabp 前一個
:tabn 後一個
標準模式下:
gt , gT 可以直接在tab之間切換
:help table:詳細用法請查看相關協助文檔
Vim比較兩個檔案
vim -d file1 file2 直接開啟兩個檔案對比
vim file1開啟第一個檔案,然後使用vert diffsplit file2開啟第二個檔案進行對比;vert表示垂直分割視窗,預設為水平分割視窗
- 直接對比兩個檔案的不同:使用
diffthis分別在兩個視窗輸入;
[c, ]c定位不同點: 分別跳到前一個、後一個不同點;
ctrl-w w:視窗跳轉: 跳到下一個視窗
ctrl-w h/l: 跳到左側(右側)視窗
ctrl-w j/k 跳到上方(下方)視窗
dp文檔合并:將差異點的當前文檔內容合并到另外一個文檔(diff put)
do 將差異點的另一個文檔內容拷貝到當前文檔
zo 臨時展開被摺疊的相同內容
zc 重新摺疊
複製文本
yy 複製當前行
6yy 複製六行
yw 複製單詞
y 複製地區(vim)
p 把複製的文本粘貼到右邊或下面
P 把複製的文本粘貼到左邊或上面
"ayy 把當前行複製到緩衝區a裡
"ap 恢複緩衝區a裡的內容
啟動編輯器
vi +100 foo 開啟檔案foo並把游標定位在100行
vi +/pat foo 開啟檔案foo並把游標定位在pat第一次出現的行
vi +foo 開啟檔案foo,把游標定位在檔案尾
vi foo1 foo2 ... 開啟檔案foo1,用n切換到foo2等
vi -r foo 把分頁檔裡的內容恢複到緩衝區裡
vi -R foo 一隻讀模式開啟foo檔案
儲存與退出
:w 儲存檔案並繼續編輯
:w bar 同微軟Windows作業系統中的“另存新檔……”
:w! bar 同上,但是覆蓋現存的檔案bar
:n1,n2w foo 把n1到n2之間的行儲存到檔案foo
:n1,n2w>>foo 把n1到n2之間的行添加到foo檔案尾
:.w foo 把當前行儲存到檔案foo
:$w foo 把最後一行儲存到檔案foo
:x 儲存並退出編輯器
:wq 同上
:q 如果檔案的內容沒有變化則退出編輯器
:q! 放棄修改並退出編輯器
vim中瀏覽目錄
:E :開啟vim預設路徑的檔案夾
– :到上級目錄
D :刪除檔案(大寫)
R :改檔案名稱(大寫)
s :對檔案排序(小寫)
x :執行檔案
多檔案編輯
如果當前行還沒有儲存(並且 autowrite 未設定),則不能使用:e、:n和:rew命令。命令後面的!使得安全特性無效。
:e foo 停止對當前檔案的編輯,開始編輯foo檔案
:e! foo 同上,但是取消對當前檔案的修改
:e! 裝入當前檔案的最近儲存的內容
[Ctrl+^] 返回到最近編輯的檔案
:n 編輯下一個檔案(當用vi同時編輯多個檔案時)
:set autowrite(aw) 在用:n切換到下一個檔案之前自動儲存當前檔案
:rew 返回到檔案清單的第一個檔案(當用vi同時編輯多個檔案時)
:r foo 把foo檔案的內容插入當前行的下面
多視窗(vim)
:sq 把當前視窗拆分為兩個
:new 開啟一個新的空白視窗
:[Ctrl+w][Ctrl+w] 在視窗之間切換 Ctrl+w+R 將視窗移到右邊 Ctrl+w+L 將視窗移到左邊
:on 把當前視窗變為唯一的視窗
:q 退出當前視窗
:qa 退出所有視窗
:xa 儲存並退出全部視窗
[Ctrl]+ 增大視窗尺寸
[Ctrl]- 減小視窗尺寸
搜尋與重複
搜尋模式pat可以時一個字串,也可以是一個Regex。vi使用一套專用的字元序列來執行一行內的搜尋。
/pat 向前搜尋pat
?pat 向後搜尋pat
/printf向前搜尋printf
?[0-0]$ 向後搜尋行尾的數字
/^# 向前搜尋行首的#
n 按上次搜尋方向重複搜尋
N 按與前次搜尋的相反方向重複搜尋
:set wrapscan(ws) 繼續搜尋直至達到檔案尾
:set ignorecase(ic) 搜尋時不區分大小寫
:set magic 保留Regex字元的意義
fc 在當前行向前搜尋字元c
Fc 在當前行向後搜尋字元c
; 在當前行重複上次向前搜尋
, 在當前行重複上次逆向搜尋
* :向下尋找游標所在的單詞,類似於/
#:向上尋找游標所在的單詞,類似於?
替換
源模式s1也可以是Regex。使用歐冠地址時,"."代表當前行,"$"代表最後一行,"1,$"代表整個檔案。
:.s/s1/s2 把當前行中第一次出現的s1替換為s2
:1,$s/s1/s2 把整個檔案裡的s1替換為s2
:1,$s/echo/printf/g 把全部的echo替換為printf
:1,$s/s1/s2/gc 按互動方式把全部s1替換為s2
:1,$s/#//g 刪除檔案中所有的“#”
:3,10s/^/#/g 在3至10行的行首插入“#”
:$s/$/;/ 在最後一行的行尾插入“;”
:1,$s/s1/s2/g把所有的s1替換為s2
:1,$s/HEAD/<&>/g 把所有的HEAD替換為
標誌與書籤
ma 設定一個標籤a
‘a 移動到標籤a
" 在當前標誌與前一個標誌位置之間切換
重做與恢複
.重複上次命令
u 取消上次的編輯命令(在vim裡取消所有以前的命令)
[Ctrl+r] 重做上次取消的操作(只限於vim)
U 取消所有對當前行的操作
"4p 從緩衝區中恢複第4次最近的刪除操作
縮寫表示
:ab name stg 把name縮寫為stg
:unab stg 刪除stg縮寫
:ab 列出所有的縮寫
映射鍵
:map key commands 把key映射到commands
:map! key commands 在輸入模式下把key映射到commands
:unmap key 取消命令模式下的key映射
:unmap! key 取消輸入模式下的key映射
:map 顯示命令模式下所有的映射
:map! 顯示輸入模式下的所有映射
與UNIX的介面命令
:!cmd 執行UNIX的cmd命令
:!%把當前檔案作為shell或perl指令碼執行
:r !cmd 把cmd命令的結果插入到當前行的下面
:r !head -n 3 foo 把foo檔案前三行內容插入到當前行的下面
sh 暫時退出UNIX shell 環境
[Ctrl+z] 暫停編輯(用fg命令可以返回vi編輯器)
:!cc% 編譯正在編輯的C程式
:!javac %編譯正在編輯的Java程式
其它
- 在檔案中要修改部分文本的縮排:在命令模式下,按v去選擇多行,再按shift+>(<)來改變縮排。
- 也可以使用3再按shift+>(<)來改變縮排(3倍)
外掛程式安裝
- 普通外掛程式自己將
*.vim複製到~/.vim/plugin中即可
*.vmb的外掛程式:則首先需要使用vim將外掛程式開啟,然後使用命令:so %進行安裝
*.vba的外掛程式:首先使用vim開啟外掛程式,然後使用UseVimBall ~/.vim進行安裝
Vim的摺疊
- 設定摺疊方式: 可用選項 ‘foldmethod‘ 來設定摺疊方式:set fdm=*
- 6 種方法來選定摺疊:
- manual 手工定義摺疊
- indent 更多的縮排表示更進階別的摺疊
- expr 用運算式來定義摺疊
- syntax 用文法高亮來定義摺疊
- diff 對沒有更改的文本進行摺疊
- marker 對文中的標誌摺疊
注意,每一種摺疊方式不相容,如不能即用expr又用marker方式,我主要輪流使用indent和marker方式進行摺疊。
使用時,用:set fdm=marker 命令來設定成marker摺疊方式(fdm是foldmethod的縮寫)。
要使每次開啟vim時摺疊都生效,則在.vimrc檔案中添加設定,如添加:set fdm=syntax,就像添加其它的初始化設定一樣。
- 摺疊命令
選取了摺疊方式後,我們就可以對某些代碼實施我們需要的摺疊了,由於我使用indent和marker稍微多一些,故以它們的使用為例:
如果使用了indent方式,vim會自動的對大括弧的中間部分進行摺疊,我們可以直接使用這些現成的摺疊成果。
在可摺疊處(大括弧中間):
zc 摺疊
zC 對所在範圍內所有嵌套的摺疊點進行摺疊
zo 展開摺疊
zO 對所在範圍內所有嵌套的摺疊點展開
[z 到當前開啟的摺疊的開始處。
]z 到當前開啟的摺疊的末尾處。
zj 向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。
zk 向上移動到前一摺疊的結束處。關閉的摺疊也被計入。