導航:首頁 > 程序命令 > vim命令如何精確給字元編號

vim命令如何精確給字元編號

發布時間:2023-01-02 07:49:24

① vi/vim操作手冊

vi/vim 分為三種模式:命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。

啟動vi/vim便進入了命令模式。此狀態下鍵盤指令會被識別為命令而不是字元。
常用命令:

在命令模式中按下i就進入了輸入模式,也叫編輯模式,可以直接編輯文本。
按ESC回到命令模式。

在命令模式下按下 : 就進入了了底線命令模式。

② 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 取消行號

③ Linux下vim編輯器命令大全

vim可以分為三種狀態,分別是 命令行模式(command mode) 、 輸入模式(Insert mode) 和 底行模式(last line mode) ,這 3 種工作模式可隨意切換,如下圖所示。

使用vim編輯文件時,默認處於命令行模式。此模式下,可使用方向鍵(上、下、左、右鍵)或 k、j、h、i 移動游標的位置,還可以對文件內容進行復制、粘貼、替換、刪除等操作。

下圖所示是vim處於命令行模式的狀態示意圖。

在輸入模式下,vim可以對文件執行寫操作,類似於在Windows系統的文檔中輸入內容。

使vim進行輸入模式的方式是在命令模式狀態下輸入 i 、 I 、 a 、 A 、 o 、 O 等插入命令(各指令的具體功能下表所示),當編輯文件完成後按 esc 鍵即可返回命令模式。

下圖所示為vim處於輸入模式模式下的示意圖。

底行模式用於對文件中的指定內容執行保存、查找或替換等操作。

使vim切換到底行模式的方法是在 命令行模式 狀態下按 : 鍵(注意是英文符號),此時vim窗口的左下方出現一個 : 符號,這是就可以輸入相關指令進行操作了。

指令執行後vim會自動返回命令行模式。如想直接返回命令行模式,按 esc 即可。

下圖所示為vim進入底行模式後的狀態。

對於新手來說,經常不知道自己處於什麼模式。不論是自己忘了,還是不小心切換了模式,都可以按一次 esc 鍵返回命令行模式。如果你多按幾次 esc 鍵後聽到"嘀————"的聲音,則代表你已經處於命令行模式了。

打開文件

打開文件時游標處於文件尾部

打開文件時,游標定位到第幾行

字元移動

這些移動鍵都可以加上數字(5h:向左移動5個字元格)

單詞移動

行內跳轉

行間移動

在底行模式下,直接給出行號,實現跳轉

用法:起始地址,結束地址 s @要替換內容@替換後內容@gi(@分隔符)

例 :1,$s/a/A/g 把文件中全部的a換替換成A,全局替換

顯示取消行號

設定自動縮進(寫腳本時)

查找到的文本高亮顯示

語法高亮

/etc/vimrc :全局配置文件,永久有效
~/.vimrc :個人配置文件,每個用戶的家目錄中,若不存在,手動創建

對於第一次用vim的童鞋,有幾點需要提醒一下:

④ 深入理解vim編碼設置

vim的使用環境比較復雜,可以通過terminal在本地使用(比如Mac或Linux主機),也可以ssh連接到遠程伺服器使用,還可以使用gvim。這里主要討論terminal下的使用,搞清楚了vim在terminal下的編碼設置,gvim相對更簡單,自然也就了解了

首先我們要理解字元和位元組的區別,字元是用來顯示的,而位元組是存儲和傳輸時使用,網路傳輸的是位元組流,文件存儲的也是位元組流,而編輯器要顯示文件內容,就需要轉化為字元來顯示,字元和位元組之間的關系可以定義如下

可見encode和decode是一對逆向操作,它們都需要指定編碼方案,如果編碼方案不一致,則會操作失敗

通過terminal操作遠程vim時,其數據流向可以表示如下

在這個流向里,只有terminal和vim需要顯示字元,其它進程或服務只是做數據傳輸,如果只是單純傳遞二進制數據,是不需要涉及編碼解碼的,只有當顯示字元的時候才需要進行解碼,因此只有terminal和vim需要配置編碼,而terminal需要和本地shell打交道,遠程vim也需要和shell打交道,shell的編碼也至關重要

terminal本身也是一個進程,最終的字元顯示都需要由terminal來完成,我們在terminal上輸入字元也會由它進行編碼之後再傳遞,簡單來說就是

這里編解碼方案就是terminal需要配置的

locale命令也可查看shell編碼設置,以LC_開頭的代表系統不同類別的編碼方案,分為如下幾類

至於最終選什麼方案,其優先順序如下

也就是說一切都以LC_ALL為主,如果沒有設置,則查找LC_*對應的設置項,如果仍舊沒有,則使用LANG的設置,影響字元顯示的為LC_CTYPE項,為了便於描述,後續提到shell編碼時一律指LC_ALL項,設置shell編碼方式如下

假設我們本地terminal編碼設置為UTF-8,shell編碼設置為GBK,當我們在terminal上輸入中文字元時,會顯示為亂碼或不顯示

我們分析一下在終端輸入shell命令時的數據交互

將terminal和shell看做兩個服務,它們之間需要進行數據交互,在發送數據時進行編碼,在收到數據時會進行解碼,如果編碼方案和解碼方案不一致,就會導致亂碼或失敗,表現形式就是在terminal上輸入中文命令時會顯示異常,執行結果也不符合預期

如果用ssh登陸遠程shell,則遠程shell的編碼配置和本地shell一致,在通過 ssh -v 可以列印ssh在登陸過程中做了哪些事

因此我們第一個要點是

vim和編碼相關的有4個設置項

可見vim的編碼設置相當復雜,我們還是以具體的實例來分析這些編碼設置的作用

不管是打開本地vim,還是打開遠程vim,我們首先保證本地shell的編碼設置和terminal一致,這樣涉及到編解碼的數據流可以簡化為

vim打開文件,最終還是在terminal上顯示,這個過程和編碼設置相關的有

可見vim在打開文件並顯示的過程中有大量的編碼轉化操作,將二進制從編碼A轉化為編碼B的步驟為

最終輸出仍舊為位元組流,如果A和B不同,則輸出位元組流和輸入就不一樣(ascii位元組流除外,在所有編碼方案里ascii字元對應的位元組流都是一樣的)。轉換成功的前提是,decode所採用的編碼方案必須和輸入位元組流編碼方案一致,也就是說如果輸入位元組流是採用C編碼方案生成的,採用A編碼方案去解碼就會失敗

如果vim的某些編碼項沒有設置,會使用其依賴項的設置或默認設置,依賴關系如下

vim的這些編碼設置項里通常我們只設置fileencodings和encoding,如果只在中英文環境下使用,可設置如下

encoding一定要設置utf8,因為utf8可以表示所有字元

假設terminal編碼設置為gbk,vim的encoding為utf8,此時我們打開一個文件,不管這個文件是utf8還是gbk編碼,它都無法正常顯示

前面提到,vim的termencoding默認會繼承encoding的設置,對應前面打開文件的步驟如下

如果要正常顯示,只需要臨時修改vim的termencoding編碼和terminal編碼一致即可,termencoding只涉及到顯示,不涉及文件內容的改變,切勿修改encoding項,准確來說,在任何時候都不要試圖修改encoding設置

因此我們的第二個要點是

如果說打開文件的數據流是從vim到terminal,那修改文件則是從terminal到vim再到terminal這么一個來回

和編碼相關的步驟如下,打開文件顯示的過程前面已經描述過,這里只說修改和保存的過程

fileencoding有兩種情況

由上可見,encoding方案編碼的數據在vim中是一個中轉站,接收數據時(從文件讀取或從終端輸入)都要轉化為encoding編碼方案,保存文件時再由encoding編碼方案轉化為fileencoding編碼方案。因此encoding必須設定為一個能表示所有字元的編碼方案,通常我們設置為utf8

假設terminal和shell的編碼設置均為gbk,vim的encoding設置為utf8,如果想正常輸入和顯示字元,必須將termencoding設置和terminal編碼一致,這是不管是顯示字元還是輸入字元保存文件,都可以正常工作

我們可以設置編碼不一致只是為了演示編碼的影響,在實際環境中,必須保證這些編碼設置都一致,因此終極要點是

⑤ vim與正則表達式

純文本文件 :由ASCII, Unicode 或其它編碼的純文字的文件

文本文件編輯工具:

vi ——Visual editor,文本編輯器

vim ——VIsual editor iMproved ,和vi 使用方法一致, 但功能更為強大

vim分很多種工作模式,操作之前 首先明確當前處於哪個模式

首要快捷鍵:模式之間相互切換

說明:

打開vim默認進入命令模式,所有按鍵操作在屏幕上不可見!!!

命令模式功能強大,只是 按鍵時看不到輸入內容 ,所以需要大量的記憶才能更好的使用

ZZ 保存並退出

ZQ 不保存退出

字元間跳轉:

單詞間跳轉:

句間移動:

段落間移動:

行間移動:

行首行尾跳轉:

當前頁跳轉:

命令模式翻屏操作:

在命令模式下也能進行部分編輯操作

y 復制,行為相似於d剪切

同理也可以結合游標跳轉字元,實現范圍操作

!!!應注意:單獨按 d 或 y 是不起作用的

與 d 的功能完全一致,但是 完成操作後自動切換到插入模式

比如:

cc :即為刪除本行並進入插入模式,cc=S

C:刪除當前游標到行尾,並切換成插入模式,相當於c$

特別地: 范圍操作

按「 : 」進入Ex模式 ,創建一個命令提示符: 處於底部的屏幕左側

以行為基本單位

地址定界後跟一個編輯命令,即可進行批量范圍操作

特別地,s///也可以換為s@@@...等其他字元

以上所有設置的關閉方式相同:set noCMD

永久保存設置,保存在配置目錄

用方向鍵和其他字元跳躍快捷鍵模擬滑鼠選中操作
被選中的文字可被刪除,復制,變更,過濾,搜索,替換等

進入此模式的快捷鍵:

單個文件切割後 相當於兩個窗口同時顯示同一個文件

寄存器即為 多個剪貼板

有26個 字母命名 寄存器和1個 無命 名寄存器,常存放不同的剪貼版內容, 可以不同會話間共享

未指定,將使用無命名寄存器, 即為普通的復制粘貼操作

還有10個 數字寄存器 ,用0,1,…,9表示,0存放最近復制內容,1存放最近刪除內容
當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推

數字寄存器不能在不同會話間共享

作用是標記書簽

輸入ma :將當前位置標記為a
輸入 'a 跳轉到a標記的位置

26個字母均可做標記, mb 、 mc 等等

qa 錄制宏 a,a為宏的名稱
q 停止錄制宏
@a 執行宏 a
@@ 重新執行上次執行的宏

錄制宏 是錄制位置還是錄制一系列操作???

涉及 xxd 命令

1、在vim中設置tab縮進為4個字元

2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,替換/tmp/functions文件中的/etc/sysconfig/init為/var/log

3、刪除/tmp/functions文件中所有以#開頭,且#後面至少有一個空白字元的行 的行首的#號

cat 可以查看文本內容

特別地,若無指定文件 或文件名為 - ,表示從標准輸入接收信息

Windows中的文本文件與Linux中格式有所不同

對於一些類似換行、Tab...等不可見字元,可使用 -A 選項進行顯示

兩種逆向顯示:

文本 篇幅較大 時,用cat查看不太方便,此時應使用more命令

使用more命令查看, 移動到最後一行時自動退出

為了反復查看文件,可使用less命令 (less終端內 不顯示進度百分比

與管道配合使用

若已知輸出結果會是大篇幅內容,可提前用管道連接more或less

大篇幅文件,若 只需要查看前幾行 ,可使用head命令

不指定行數,head默認輸出前10行

特別地,行數為負數時,如head -n -5 表示 去除最後5行

與之相反,tail命令則表示 顯示文件指定的最後幾行

不指定默認輸出最後10行 ,同樣也支持 -c 位元組數

特別地, tail命令行數前使用 + 號 ,如 -n +3 表示 從第3行往後全部輸出

@@tail實用功能( -f 選項):持續監測文件是否有追加內容

cut 命令 以指定分隔符 對文本文件或STDIN數據的 每行內容進行切割

默認分隔符為TAB

三種類似功能:指定 位元組b/字元c/欄位f 序號或范圍

不常用功能:-b 、 -c

-nb的作用:防止切割多位元組字元(可認為等效於-c)

#已知每個漢字大小為3byte!!!

常用功能:-f(需要先用-d指定分隔符,不指定則為tab)

其他功能: 在輸出結果中指定需要顯示的分隔符

其他功能: 取反 complement

默認以行為單位 ,合並多個文件同行號的列到一行

合並文件的 拼接處默認以TAB分隔

對指定文本文件或STDIN的 各項指標進行統計

包括:文件的行總數、單詞總數、位元組總數和字元總數

不加選項時默認統計前三項

應用舉例:

對文件的所有 行進行排序

默認:數字在字母之前、字母排序不分大小寫

以行為單位去除重復內容(只去除連續重復行)

對比分析兩個普通文件的不同之處 (命令cmp比較兩個 二進制文件 的區別)

選項 -y可以並排對比 -W指定並排的間距

選項 -u 用來輸出統一的(unified)diif格式文件 (適合用於補丁文件)

patch命令 :利用diff比較結果輸出的內容進行 還原

cmp命令 :比較二進製程序的源碼不同之處

排除過濾 - v

grep默認只顯示符合條件的行,- v 選項 只顯示不符合條件的內容

**忽略大小寫- i **:gerp默認大小寫敏感,- i 選項忽略大小寫

顯示行號 -n :文本過多時,顯示行號方便查看
(顯示
匹配結果在原文中的行號)

**顯示行數量 - c **, 只顯示有多少行符合條件

- o 只顯示keywords :- o 只顯示所有匹配的內容,可知 keywords數量

靜默模式:- q 選項 執行命令但不輸出結果,常用於腳本條件判斷

ABC匹配結果附帶前後行一起輸出

選項 - e 多個條件滿足其一 幾個條件就有幾次 - e
特別地, - E 表示使用擴展正則表達式

選項 - w 匹配單個單詞
單詞判斷依據——字母數字下劃線連續組合都視為單詞
單詞判斷依據——字母數字下劃線連續組合都視為單詞
單詞判斷依據——字母數字下劃線連續組合都視為單詞

正則表達式把字元和次數分開表達
正則表達式把字元和次數分開表達
正則表達式把字元和次數分開表達
正則表達式把字元和次數分開表達

基本格式為 引號 括起來:

正則表達式的 元字元按功能分四類 ,下面分別介紹

指定某個內容出現的具體次數(keyword寫在前)
只匹配前一個緊挨著的字元!!!!! !!!!!!!!!!!!!

在指定位置搜索 字元串

分組:將多個字元 作為整體 來進行處理

普通分組用法:

後向引用: 使用分組之後,後續再次引用只需要 使用 1、2 等表示第一個、第二個分組
最適合用於vim搜索替換(形如 r..t 替換成 r..ter 的情況)

邏輯 或
除了使用選項 - e 還有符號 | (其中用來轉義)

為了在復雜規則中更加直觀, 省略了轉義符

⑥ 怎樣讓vim顯示VISUAL 模式下選中的字元數

1、首先vi命令打開要修改的文件;
2、在打開文件後,默認的是瀏覽模式,即非編輯模式;
3、在非編輯模式下輸入斜杠:/;
4、在/後輸入你要找的那個字元,例如:/
,輸入完成後回車;
5、如果文件中存在這個關鍵字,那麼游標會自動定位到這個關鍵字上;
6、此時文件還是處於非編輯模式,連續按兩次鍵盤上的
「d」鍵,即可刪除所在的行;
7、然後按鍵盤上的字母「n」鍵,可以繼續在文件中查找這個關鍵字,查到後,重復步驟6刪除行的操作即可。

⑦ vim 如何實現給每個漢字後面加一個空格字元

題主你好,

測試內容及指令:

=====

希望可以幫到題主, 歡迎追問.

⑧ vim中如何查找和替換字元串

一、 字元串的查找
1. vim 中用 / 和 ? 來查找字元串,兩者的區別是:
/string 會高亮顯示游標後匹配的第一個字元串,回車後游標移到該字元串的第一個字母;
string 會高亮顯示游標前匹配的第一個字元串,回車後游標移到該字元串的第一個字母。
在回車之後,按n鍵同方向轉到下一個匹配的字元串,按N鍵反方向轉到上一個匹配的字元串。
2. 用命令 :set ic 和 :set noic 來分別設置查找時不區分和區分大小寫。
如果查找特殊字元,如 ^、$、*、/ 和 .,需要在前面加 \ 來轉義。
二、字元串的替換
1. vim 中可用 :s 命令來替換字元串,具體如下:
:s/str1/str2/ 替換當前行第一個 str1 為 str2
:s/str1/str2/g 替換當前行中所有 str1 為 str2
:m,ns/str1/str2/ 替換第 n 行開始到最後一行中每一行的第一個 str1 為 str2
:m,ns/str1/str2/g 替換第 n 行開始到最後一行中所有的 str1 為 str2
(註:m和n 為數字,若m為 .,表示為當前行開始;若n為$,則表示到最後一行結束)
如果使用 # 作為分隔符,則中間出現的 / 不會作為分隔符,比如:
:s#str1/#str2/# 替換當前行第一個 str1/ 為 str2/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/
2. 其他:%s/str1/str2/(等同於 :g/str1/s//str2/) 替換每一行的第一個 str1 為 str2
:%s/str1/str2/g(等同於 :g/str1/s//str2/g 和 :1,$ s/str1/str2/g ) 替換文中所有 str1 為 str2
從替換命令可以看到,g 放在命令末尾,表示對搜索字元串的每次出現進行替換;不加 g,表示只對搜索

⑨ 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 ——查找命令

⑩ 用vim 在哪裡執行命令字元亂碼了,需要切換編碼

windows版的vim配置文件可以在安裝目錄的_vimrc文件中。比如我裝的是vim7.2安裝目錄是d:盤的programfile\vim下,執行程序在安裝目錄下的vim72目錄中(d:\programfile\vim\vim72),配置文件就放在d:\programfile\vim目錄下,配置模版可以從d:\programfile\vim\vim72\vimrc_example.vim拷貝。在配置文件中加入
set fileencodings=ucs-bom,utf-8,cp936,gb18030
set encoding=cp936
就可自動識別文件編碼。

閱讀全文

與vim命令如何精確給字元編號相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163