㈠ vim中:ctrl+r和. ,有沒有區別
ctrl+r在編輯模式下撤銷,在常規模式下棗喊罩是跳凳鬧轉回tags上一個位置
. 這個是重復上一次命令,比如你復制操滲弊作了一次,可以用.來重復多次
㈡ Vi命令的命令大全
本編輯器是所有計算機系統中最常用的一種工具。UNIX下的編輯器有ex,sed和vi等,其中,使用最為廣泛的是vi,而vi命令繁多,論壇里好像這方面的總結不多,以下稍做總結,以資共享!渴望更正和補充!
進入vi的命令
vi filename :打開或新建文件,並將游標置於第一行首
vi +n filename :打開文件,並將游標置於第n行首
vi + filename :打開文件,並將游標置於最後一行首
vi +/pattern filename:打開文件,並將游標置於第一個與pattern匹配的串處
vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename
vi filename....filename :打開多個文件,依次進行編輯
移動游標類命令
h :游標左移一個字元
l :游標右移一個字元
space:游標右移一個字元
Backspace:游標左移一個字元
k或Ctrl+p:游標上移一行
j或Ctrl+n :游標下移一行
Enter :游標下移一行
w或W :游標右移一個字至字首
b或B :游標左移一個字至字首
e或E :游標右移一個字至字尾
) :游標移至句尾
( :游標移至句首
}:游標移至段落最後一個字母
{:游標移至段落第一個字母
nG:游標移至第n行首
n+:游標下移n行
n-:游標上移n行
n$:游標移至第n行尾
H :游標移至屏幕頂行
M :游標移至屏幕中間行
L :游標移至屏幕最後行
0:(注意是數字零)游標移至當前行首
$:游標移至當前行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
插入文本類命令
i :在游標前
I :在當前行首
a:游標後
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字元
R:替換當前字元及其後的字元,直至按ESC鍵
s:從當前游標位置處開始,以輸入的文本替代指定數目的字元
S:刪除指定數目的行,並以所輸入文本代替之
ncw或nCW:修改指定數目的字
nCC:修改指定數目的行
刪除命令
ndw或ndW:刪除游標處開始及其後的n-1個字
d0:刪至行首
d$:刪至行尾
ndd:刪除當前行及其後n-1行
x或X:刪除一個字元,x刪除游標後的,而X刪除游標前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令
/pattern:從游標開始處向文件尾搜索pattern
?pattern:從游標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
選項設置
all:列出所有選項設置情況
term:設置終端類型
ignorance:在搜索中忽略大小寫
list:顯示製表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數目
terse:顯示簡短的警告信息
warn:在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶「」的特殊字元
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
最後行方式命令
:n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內容刪除
:w :保存當前文件
:e filename:打開文件filename進行編輯
:x:保存當前文件並退出
:q:退出vi
:q!:不保存文件並退出vi
:!command:執行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容作為command的輸入
:r!command:將命令command的輸出結果放到當前行
寄存器操作
?nyy:將當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字
?nyw:將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數字
?nyl:將當前行及其下n個字元保存到寄存器?中,其中?為一個字母,n為一個數字
?p:取出寄存器?中的內容並將其放到游標位置處。這里?可以是一個字母,也可以是一個數字
ndd:將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中。
tags 用法
在函數中移動游標
[{ 轉到上一個位於第一列的{
}] 轉到下一個位於第一列的{
{ 轉到上一個空行
} 轉到下一個空行 ([ and ] 也分別是兩個指令)
ctrl+t 跳回
gd 轉到當前游標所指的局部變數的定義
* 轉到當前游標所指的單詞下一次出現的地方
# 轉到當前游標所指的單詞上一次出現的地方
Vim 的創造者是一名計算機程序員,因此這就不奇怪 Vim 中有許多幫助編寫程序的功能:
跳轉到標識符被定義和使用的地方;在另一個窗口中預覽有關的聲明等等。
㈢ 15、在vi編輯器中的命令模式下,重復上一次對編輯的文本進行的操作,可使用( )命令。
在vi編輯器中的命令模式下,巧芹重復上一次對編輯的羨沖文本進孝派畢行的操作,可使用 C 命令。
A 上箭頭 B 下箭頭 C <.>; D <*>;
㈣ emacs重復上次輸入
From Emacs FAQ:
If you're really desperate for the `.'森搏 command in `vi' that redoes
the last insertion/deletion, use VIPER, a `vi' emulation mode which
comes with Emacs, and which appears to support it.
重復命令有numeric prefix 和 C-x z (repeat),重復插入文本沒有默認的binding。爛隱
可以用viper-mode。Emacs本身沒有插入和編輯模式,所以不存在「上次輸入的字元」這個此歷祥概念,除非你用VIPER或者類似的mode.
㈤ 如何在vim中回到上一次訪問的標簽頁
vim 沒有自帶類似的功能,如果需要只能自已實現。
zdl_361 提供的就是一個不錯的想法。空弊在 vimrc 里加上:
autotableave*letg:pre_tabpagenr=tabpagenr()
nnoremap<silent> :exe"tabn".g:pre_tabpagenr<CR>
auto 後面不能加嘆號,不然刪除自動命令。
這條語句的是意思是在離開一個 tabpage 之前,先記下它的序號。這樣就可以在以後的時候跳回來了。
第二個語句是建一個映射,比如用 (你可以修改成自己想要的) 來跳回之行記錄的標數派簽。
您不能完全依賴這個小竅門,因為當你關閉標簽,或者排序標簽之後,曾經記錄的標簽號可能就不正確了。但是作為一個方便的小工具,這樣簡單的命令就很好用。
tab 確實是一個同時在多個文本上進行編輯的直觀方法。但是 vim 的多緩沖編輯還是在「跳轉」這樣的薯虧賀概念上用起來更方便。可以詳情 :h :jump-motions 來看有關的概念。
㈥ linux下vi編輯器命令大全
高級一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的:
:qx 開始記錄宏,並將結果存入寄存器x
q 退出記錄模式
@x 播放記錄在x寄存器中的宏命令
稍微解釋一下,當在normal模式下輸入:qx後,你對文本的所有編輯動作將會被記錄下來,再次輸入q即退出了記錄模
式,然後輸入@x對剛才記錄下來的命令進行重復,此命令後可跟數字,表示要重復多少次,比如@x20,可以重復20次。這個在文本的批處理中是非常有用的。
同時編輯多個文件
在vim眾多的插件中,有一個叫minibuffer的插件,就是下面所說的標簽頁功能了,可以支持同時編輯多個文件。
標簽命令
:tabe fn 在一個新的標簽頁中編輯文件fn
gt 切換到下一個標簽頁
gT 切換到上一個標簽頁
:tabr 切換到第一個標簽頁
:tabl 切換到最後一個標簽頁
:tabm [N] 把當前tab移動到第N個tab之後
對,正如你所想像的那樣,跟eclipse, ue等的標簽頁是一個意思!
窗口命令
ctrl+w s 水平分割窗口
ctrl+w w 切換窗口
ctrl+w q 退出當前窗口(由於同時有多個文件,此命令不會影響其他窗口)
ctrl+w v 垂直分割窗口
其他
vim在保存之前不會對文件做實際的修改,只是載入到緩沖區中,對文件的編輯其實是對緩沖區的編輯,直到:w時才會存入物理文件。
:e file 把file載入到新的緩沖區中
:bn 跳轉到下一個緩沖區
:bd 刪除緩沖區(關閉文件)
:sp fn 分割窗口,並將fn載入到新的窗口中
退出編輯器
:w 將緩沖區寫入文件,即保存修改
:wq 保存修改並退出
:x 保存修改並退出
:q 退出,如果對緩沖區進行過修改,則會提示
:q! 強制退出,放棄修改
查找替換
/pattern 向後搜索字元串pattern
?pattern 向前搜索字元串pattern
n 下一個匹配(如果是/搜索,則是向下的下一個,?搜索則是向上的下一個)
N 上一個匹配(同上)
:%s/old/new/g 搜索整個文件,將所有的old替換為new
:%s/old/new/gc 搜索整個文件,將所有的old替換為new,每次都要你確認是否替換
復制粘貼
dd 刪除游標所在行
dw 刪除一個字(word)
x 刪除當前字元
X 刪除前一個字元
D 刪除到行末
yy 復制一行,此命令前可跟數字,標識復制多行,如6yy,表示從當前行開始復制6行
yw 復制一個字
y$ 復制到行末
p 粘貼粘貼板的內容到當前行的下面
P 粘貼粘貼板的內容到當前行的上面
]p 有縮進的粘貼,vim會自動調節代碼的縮進
"a 將內容放入/存入a寄存器,可以支持多粘貼板
附:比如常用的一個寄存器就是系統寄存器,名稱為+,所以從系統粘貼板粘貼到vim中的命令為"+p,注意此處的+不表示操作符,二十一個寄存器。
移動游標
在vim中移動游標跟其他的編輯器中有很大的區別,不過一旦學會了,就會飛速的在文本中移動了。
h,j,k,l 上,下,左,右
ctrl-f 上翻一頁
ctrl-b 下翻一頁
% 跳到與當前括弧匹配的括弧處,如當前在{,則跳轉到與之匹配的}處
w 跳到下一個字首,按標點或單詞分割
W 跳到下一個字首,長跳,如end-of-line被認為是一個字
e 跳到下一個字尾
E 跳到下一個字尾,長跳
b 跳到上一個字
B 跳到上一個字,長跳
0 跳至行首,不管有無縮進,就是跳到第0個字元
^ 跳至行首的第一個字元
$ 跳至行尾
gg 跳至文件的第一行
gd 跳至當前游標所在的變數的聲明處
[N]G 跳到第N行,如0G,就等價於gg,100G就是第100行
fx 在當前行中找x字元,找到了就跳轉至
; 重復上一個f命令,而不用重復的輸入fx
tx 與fx類似,但是只是跳轉到x的前一個字元處
Fx 跟fx的方向相反
),( 跳轉到上/下一個語句
* 查找游標所在處的單詞,向下查找
# 查找游標所在處的單詞,向上查找
`. 跳轉至上次編輯位置
在屏幕上移動
H 移動游標到當前屏幕上最上邊的一行
M 移動游標到當前屏幕上中間的一行
L 移動游標到當前屏幕上最下邊的一行
書簽
ma 把當前位置存成標簽a
`a 跳轉到標簽a處
編輯
r 替換一個字元
J 將下一行和當前行連接為一行
cc 刪除當前行並進入編輯模式
cw 刪除當前字,並進入編輯模式
c$ 擦除從當前位置至行末的內容,並進入編輯模式
s 刪除當前字元並進入編輯模式
S 刪除游標所在行並進入編輯模式
xp 交換當前字元和下一個字元
u 撤銷
ctrl+r 重做
. 重復上一個編輯命令
~ 切換大小寫,當前字元
g~iw 切換當前字的大小寫
gUiw 將當前字變成大寫
guiw 將當前字變成小寫
>> 將當前行右移一個單位
<< 將當前行左移一個單位(一個tab符)
== 自動縮進當前行
插入模式
i 從當前游標處進入插入模式
I 進入插入模式,並置游標於行首
a 追加模式,置游標於當前游標之後
A 追加模式,置游標於行末
o 在當前行之下新加一行,並進入插入模式
O 在當前行之上新加一行,並進入插入模式
Esc 退出插入模式
可視模式
標記文本
v 進入可視模式,單字元模式
V 進入可視模式,行模式
ctrl+v 進入可視模式,列模式,類似於UE的列模式
o 跳轉游標到選中塊的另一個端點
U 將選中塊中的內容轉成大寫
O 跳轉游標到塊的另一個端點
aw 選中一個字
ab 選中括弧中的所有內容,包括括弧本身
aB 選中{}括弧中的所有內容
ib 選中括弧中的內容,不含括弧
iB 選中{}中的內容,不含{}
對標記進行動作
> 塊右移
< 塊左移
y 復制塊
d 刪除塊
~ 切換塊中內容的大小寫
㈦ vim使用指南
命令行模式:進入vim後的默認模式,用戶可以輸入vim命令來管理自己的文檔,此時從鍵盤上輸入任何字元都會當成編輯命令,輸入合法的vim命令,vim會完成相應的動作
文本輸入模式:在命令模式下輸入i/I 或者a/A 進入輸入模式,就可以在文本文件內輸入內容了,按下ESC則回到命令行模式
末行模式:在命令行模式下輸入:進入末行模式
一般進入vim 都是vim後面跟著文件名
如
如果當前文件夾下沒有此文件,則會在目錄下新生成此文件
註:如果你直接vim進入編輯器,而沒有跟文件名,他也會進去,但是你退出時需要指定文件名稱
如果你想進入編輯器中的具體某一行(指游標所在的行)
需要進入文本輸入模式
命令模式下輸入i進入文本輸入模式可以輸入內容了,在游標所在字元之前進行插入
輸入I 是在游標所在行行首進行輸入
輸入a是在游標所在字元的後面進行插入
輸入A是在游標所在行行末進行輸入
輸入o在游標所在行下面插入一空行
輸入O在游標所在行上面插入一空行
你可以在輸入模式下按Delete或者退格鍵(Backspace)進行刪除文本,我將介紹一些在命令行下如何刪除文本
x —— 刪除游標所在的字元
X —— 刪除游標所在字元前面的字元
D或者d$ ——刪除游標所在位置到行末的字元
dd——刪除游標所在一行
yy——復制游標所在行
Y——復制游標所在位置到行尾
y0——復制游標前一位到行首
p——粘貼
v/V——選中文本
u/U——撤銷
.——重復上次執行的命令
需要進入文本末模式
:q——退出
:q!——強制退出
:w——保存
:wq——保存並退出
j——向下
k——向上
h——向左
l——向右
H——前面加數字代表游標移動到哪行行首,(當前屏幕)
M——移動到文本中間,或者屏幕中間行的行首
L——移動到文本末或者屏幕底部行行首,可以加數字
G——不受屏幕限制,是文本的行數
:set number ——設置行號
/string ——查找命令
㈧ VI和VIM命令的操作
vi編輯器是分為三種狀態的
h 或 向左箭頭鍵(←) 游標向左移動一個字元
j 或 向下箭頭鍵(↓) 游標向下移動一個字元
k 或 向上箭頭鍵(↑) 游標向上移動一個字元
l 或 向右箭頭鍵(→) 游標向右移動一個字元
[Ctrl] + [d] 屏幕『向下』移動半頁
[Ctrl] + [u] 屏幕『向上』移動半頁
0 或功能鍵[Home] 這是數字『 0 』:移動到這一行的最前面字元處 (常用)
$ 或功能鍵[End] 移動到這一行的最後面字元處(常用)
gg 移動到這個檔案的第一行 (常用)
n<Enter> n 為數字。游標向下移動 n 行(常用)
n<space> 那個 n 表示『數字』,游標會向右移動這一行的 n 個字元。
n<Enter> n 為數字。游標向下移動 n 行(常用)
/word 向下尋找某個單詞
?word 向下尋找某個單詞
n 向下重復執行搜索命令
N 向上重復執行搜索命令
dd 刪除游標所在的整列
yy 復制游標所在那行
. 重復上一個動作
主要為一般模式到編輯模式的切換
i,I a,A o,O r,R 都可以實現到編輯模式的切換
其中r,R實現的是取代模式
Esc 為推出編輯模式回到常用模式
:w 編輯的數據寫入硬碟
:w! 如果未見為只讀的時候強制寫入
;q 離開
:q! 不儲存強制離開
:wq 儲存後離開
:wq! 儲存後強制離開
ZZ 若檔案沒有動過則直接離開,若檔案已動過則保存離開
:set nu 設置行號
:set nonu 取消行號