vi格式化代码,撤销,重做,回退操作
?
在vim中其實也有像Eclipse中的ctrl + shift +F 的自動格式化代碼的操作,盡管非常強大,但是通常會破壞代碼的原有的縮進,
所以不建議在python這樣縮進代替括號的語言中和源程序已經縮進過的代碼中使用,廢話少說,下面說步驟:
1,gg 跳轉到第一行
2,shift+v?轉到可視模式
3,shift+g?全選
4,按下神奇的?=
?
?
在vi中按u可以撤銷一次操作
u?? 撤銷上一步的操作
Ctrl+r 恢復上一步被撤銷的操作
注意:
如果你輸入“u”兩次,你的文本恢復原樣,那應該是你的Vim被配置在Vi兼容模式了。
重做
如果你撤銷得太多,你可以輸入CTRL-R(redo)回退前一個命令。換句話說,它撤銷一個撤銷。要看執行的例子,輸入CTRL-R兩次。字符A和它后面的空格就出現了:
young intelligent turtle
有一個特殊版本的撤銷命令:“U”(行撤銷)。行撤銷命令撤銷所有在前一個編輯行
上的操作。 輸入這些命令兩次取消前一個“U”:
A very intelligent turtle
xxxx 刪除very
A intelligent turtle
xxxxxx 刪除turtle
A intelligent
用“U”恢復行
A very intelligent turtle
用“u”撤銷“U”
A intelligent
“U”命令自己改變自己,“u”命令撤銷操作,CTRL-R命令重做操作。這有點亂,但不用
擔心,用“u”和CTRL-R命令你可以切換到任何狀態。
流行的文本編輯器通常都有前進和后退功能,可以在文件中曾經瀏覽過的位置之間來回移動。在 vim 中使用 Ctrl-O執行后退,使用 Ctrl-I 執行前進。
相關幫助:??:helpCTRL-O??:helpCTRL-I?? :help jump-motions
?
?
好久沒有用Linux了,身邊又沒有環境,煩請各位給看看,給個準確答案: ?
? ?
? 1 ? 在 ? vim?中,遇到如下的編輯問題,應該怎么操作??????
? a) ? 撤消上一個編輯操作。?
? b) ? 重復上一個編輯操作。?
? c) ? 還原被撤消的編輯操作。?
? d) ? 多次重復一組編輯操作。?
? e) ?把一段文字轉換為全部大寫。???
??
? 2 ?下面的目錄屬性??????
? drwxrwsr-x ? ?? ? 7 ? dijk? ? ?? ? team ?? ? ?? ? ?? ? 4096 ?? 4月 ? ? 8? 19:34 ?qingli?????
? a) ? 這里的 ? s? 屬性有何作用? ?
? b) ? 屬性字段后的數字? 7 ?表示什么????
????
? 3 ? liback.la? ? 庫文件的后綴.la是什么含義?
a) ? 撤消上一個編輯操作。 ?? ? ====》 ? U?
? b) ? 重復上一個編輯操作。? ? =====>? . ?
? c) ? 還原被撤消的編輯操作。? ======> ? Ctrl? + ? R ?
? d) ? 多次重復一組編輯操作。?
? "."命令可以重復最近一次的編輯動作. ?但是如果你要做的操作遠比 ?
? 這些小兒科復雜呢? ?那就是Vim為什么要引入命令記錄的原因. ? 使用命令?
? 記錄分三個步驟1 ?
? 1. ? 使用"qfregisterg"命令開始,? 后續的動作將被記錄進名為fregisterg的 ?
? 寄存器中. ? 給出的寄存器名字必需是a到z之間的一個字母2?
? 2 ? 執行你要執行的操作3.?
? 3. ? 按下q以結束對命令的記錄(注意僅僅是q一個字符,? 不要鍵入多 ?
? 余的字符). ?
? 現在你可以通過"@frecordingg"命令來執行剛剛記錄下來的記錄宏?
? 了.下面的例子將演示如何實際運行該功能. ?假如你有如下的文件名列 ?
? 表: ?
? stdio.h ?
? fcntl.h ?
? unistd.h ?
? stdlib.h ?
? 而你實際想要的結果如下: ?
? #include ? "stdio.h"?
? #include ? "fcntl.h"?
? #include ? "unistd.h"?
? #include ? "stdlib.h"?
? 將光標移動到第一行上. ? 接下來執行:?
? qa ? 開始將后續的命令記入寄存器a?
? ^ ? 將光標移動到行首?
? i\#include ?"<Esc> ?在該行之前插入#include ? " ?
? $ ? 移動到行尾?
? a"<Esc>? 在行尾加上"字符 ?
? j ? 移到下一行?
? q ? 停止記錄?
? 現在你已經將對第一行的操作完成了一遍, ? 對其它三行只需要執?
? 行3次"@"命令"@a"命令也可以加一個數字前輟1, ?這會使該記錄被回放由 ?
? 該數字指定的次數. ? 在上面的例子中是:?
? normal ? mode? command ?
? 3@a ?
? e) ? 把一段文字轉換為全部大寫。?
? ~ ? 交換大小寫(a ?-> ? A, ? A? -> ? a)?
? U ? 將小寫變大寫(a ?-> ? A, ? A? -> ? A)?
? u ? 將大寫變小寫(a ?-> ? a, ? A? -> ? a)?
? ?
? ?
? drwxrwsr-x ? ?? ? 7 ? dijk? ? ?? ? team ?? ? ?? ? ?? ? 4096 ?? 4月 ? ? 8? 19:34 ? qingli?
? ?
? a) ? 這里的 ? s? 屬性有何作用? ? ?? ? ?
?set-uid位。當程序執行的時候,會改變執行權限,既設置了set-uid位后程序的執行權限變為文件所有者權限。?
? b) ? 屬性字段后的數字? 7 ? 表示什么??
? 子目錄的個數 ? 包含. ?..目錄。
?
liback.la ? ? 庫文件的后綴.la是什么含義??
? 表示libback是個靜態庫。
?
b) ? 屬性字段后的數字 ? 7? 表示什么? ?
? 子目錄的個數 ? 包含. ?..目錄。? ?
? ?
? 這里的7,應該是指鏈接到此文件的個數吧.!
?
這里的7,應該是指鏈接到此文件的個數吧.! ?
? ==========================================?
? 鏈接是ln創建的文件?? ?
? ?
? 這樣解釋把: ?
? 7專業的叫法是連接記數。 ?
?任何一個葉目錄(不包含任何其他目錄,也就是子目錄的目錄)其連接記數總是2,數值2來自于命名該目錄的目錄名以及該目錄中的.項。當創建一個子目錄該子目錄里的..項指向他的父目錄,使父目錄的連接記數加1。?
? 所以也可以說7是子目錄的個數+目錄名+. ??
? 我上面說的..不包含在內。(不好意思)
?
總結
以上是生活随笔為你收集整理的vi格式化代码,撤销,重做,回退操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vi字符串替换
- 下一篇: FFmpeg音频编解码处理