新聞中心
光標左移是非常常見的一種操作,特別是在文本編輯器和終端中。在Linux編程中,我們需要實現(xiàn)光標左移的功能,以便提高程序的交互性和可讀性。本文將介紹如何在Linux編程中實現(xiàn)光標左移。

阿魯科爾沁網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,阿魯科爾沁網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為阿魯科爾沁上千多家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的阿魯科爾沁做網(wǎng)站的公司定做!
一、使用ANSI控制序列實現(xiàn)光標左移
ANSI控制序列是一種特殊的字符串序列,用于控制終端的操作。在ANSI控制序列中,使用ESC轉(zhuǎn)義字符和一系列數(shù)字、分號和字母來表示不同的控制碼。使用ANSI控制序列,我們可以實現(xiàn)在終端中移動光標、修改文本顏色等操作。
要在Linux編程中實現(xiàn)光標左移,我們可以使用ANSI控制序列中的”\033[D”命令。該命令將光標向左移動一個字符位置。
具體實現(xiàn)如下:
// Include header files for I/O functions
#include
#include
// Define ANSI escape sequence for cursor left
#define cursorleft() printf(“\033[D”)
// Mn function
int mn()
{
// Print text
printf(“Hello, world!”);
// Move cursor left 6 times
for(int i=0; i
cursorleft();
}
// Print new text
printf(“Linux programming “);
return 0;
}
在上面的代碼中,我們首先定義了一個名為cursorleft()的函數(shù)。該函數(shù)使用printf()函數(shù)和ANSI控制序列”\033[D”來實現(xiàn)將光標向左移動一個字符位置的功能。接著,在mn()函數(shù)中,我們先打印了一段文本“Hello, world!”,然后使用for循環(huán)調(diào)用cursorleft()函數(shù)將光標向左移動6個字符位置。在光標所在的位置打印了一段新的文本“Linux programming”。
二、使用ncurses庫實現(xiàn)光標左移
ncurses庫是一種高級的終端控制庫,它提供了許多的函數(shù)和數(shù)據(jù)類型,用于管理終端設備、控制光標、修改顏色等操作。使用ncurses庫,我們可以方便地實現(xiàn)在Linux編程中的終端控制功能。
要在Linux編程中使用ncurses庫實現(xiàn)光標左移,我們需要進行以下步驟:
1. 包含ncurses.h頭文件
2. 初始化ncurses庫
3. 使用move函數(shù)將光標移動到指定位置
4. 使用delch函數(shù)刪除指定位置的字符
5. 使用refresh函數(shù)更新終端屏幕
具體實現(xiàn)如下:
// Include header files for ncurses library
#include
// Mn function
int mn()
{
// Initialize ncurses library
initscr();
// Print text
printw(“Hello, world!”);
// Move cursor left 6 times
for(int i=0; i
move(0, i+5); // Move cursor to new position
delch(); // Delete character at current position
}
// Print new text
printw(“Linux programming”);
refresh(); // Update screen
// Wt for user input
getch();
// End ncurses mode
endwin();
return 0;
}
在上面的代碼中,我們首先包含了ncurses.h頭文件并調(diào)用了initscr()函數(shù)初始化ncurses庫。接著,我們使用printw()函數(shù)打印了一段文本“Hello, world!”。然后,使用move()函數(shù)將光標移動到指定位置,并使用delch()函數(shù)刪除指定位置處的字符。我們在光標所在的位置打印了一段新的文本“Linux programming”,并使用refresh()函數(shù)更新了終端屏幕。使用getch()函數(shù)等待用戶輸入,然后調(diào)用endwin()函數(shù)結(jié)束ncurses模式。
相關問題拓展閱讀:
- linux的vi編輯器的使用方法及比較常用的命令
- linux中vi常用的命令?
linux的vi編輯器的使用方法及比較常用的命令
kvm使用檔納方敗族法及virsh命令察蠢弊使用
命令 光標移動
h或^h 向左移一個字符
j或^j或^n 向下移一行
k或^p 向上移一行
l或空格 向右移一個字符迅念冊
G 移到文件的最后一行
nG 移到文件的第n行
w 移到下一個字畝宏的開頭
W 移到下一個字的開頭,忽略標點符號
b 移到前一個字的開頭
B 移到前一個字的開頭,忽略標點符號
L 移到屏幕的最后一行
M 移到屏幕的中間一行
H 移到屏幕的之一行
e 移到下一個字的結(jié)尾
E 移到下一個字的結(jié)尾,忽略標點符號
( 移到句子的開頭
) 移到句子的結(jié)尾
{ 移到段落的開頭
} 移到下一個段落的開頭
0或| 移到當前行的之一列
n| 移到當前行的第n列
^ 移到當前行的之一個非空字符
$ 移到當前行的最后一個字符
+或return 移到下一行的之一個字符
– 移到前一行的之一個非空字符
在vi中添加文本命令 插入動作
a 在光標后插入文本
A 在當前行插入文本
i 在光標前插高空入文本
I 在當前行前插入文本
o 在當前行的下邊插入新行
O 在當前行的上邊插入新行
:r file 讀入文件file內(nèi)容,并插在當前行后
:nr file 讀入文件file內(nèi)容,并插在第n行后
escape 回到命令模式
^v char 插入時忽略char的指定意義,這是為了插入特殊字符
在vi中刪除文本命令 刪除操作
x 刪除光標處的字符,可以在x前加上需要刪除的字符數(shù)目
nx 從當前光標處往后刪除n個字符
X 刪除光標前的字符,可以在X前加上需要刪除的字符數(shù)目
nX 從當前光標處往前刪除n個字符
dw 刪至下一個字的開頭
ndw 從當前光標處往后刪除n個字
dG 刪除行,直到文件結(jié)束
dd 刪除整行
ndd 從當前行開始往后刪除
db 刪除光標前面的字
ndb 從當前行開始往前刪除n字
:n,md 從第m行開始往前刪除n行
d或d$ 從光標處刪除到行尾
dcursor_command 刪除至光標命令處,如dG將從當產(chǎn)膽行刪除至文件的末尾
^h或backspace 插入時,刪除前面的字符
^w 插入時,刪除前面的字
修改vi文本每個命令前面的數(shù)字表示該命令重復的次數(shù)
命令 替換操作
rchar 用char替換當前字符
R text escape 用text替換當前字符直到換下Esc鍵
stext escape 用text代替當前字符
S或cctext escape 用text代替整行
cwtext escape 將當前字改為text
Ctext escape 將當前行余下的改為text
cG escape 修改至文件的末尾
ccursor_cmd text escape 從當前位置處到光標命令位置處都改為text
在vi中查找與替換命令 查找與替換操作
/text 在文件中向前查找text
?text 在文件中向后查找text
n 在同一方向重復查找
N 在相反方向重復查找
ftext 在當前行向前查找text
Ftext 在當前行向后查找text
ttext 在當前行向前查找text,并將光標定位在text的之一個字符
Ttext 在當前行向后查找text,并將光標定位在text的之一個字符
:set ic 查找時忽略大小寫
:set noic 查找時對大小寫敏感
:s/oldtext/newtext 用newtext替換oldtext
:m,ns/oldtext/newtext 在m行通過n,用newtext替換oldtext
& 重復最后的:s命令
:g/text1/s/text2/text3 查找包含text1的行,用text3替換text2
:g/text/command 在所有包含text的行運行command所表示的命令
:v/text/command 在所有不包含text的行運行command所表示的命令
在vi中復制文本命令 復制操作
yy 將當前行的內(nèi)容放入臨時緩沖區(qū)
nyy 將n行的內(nèi)容放入臨時緩沖區(qū)
p 將臨時緩沖區(qū)中的文本放入光標后
P 將臨時緩沖區(qū)中的文本放入光標前
“(a-z)nyy 復制n行放入名字為圓括號內(nèi)的可命名緩沖區(qū),省略n表示當前行
“(a-z)ndd 刪除n行放入名字為圓括號內(nèi)的可命名緩沖區(qū),省略n表示當前行
“(a-z)p 將名字為圓括號的可命名緩沖區(qū)的內(nèi)容放入當前行后
“(a-z)P 將名字為圓括號的可命名緩沖區(qū)的內(nèi)容放入當前行前
在vi中撤消與重復命令 撤消操作
u 撤消最后一次修改
U 撤消當前行的所有修改
. 重復最后一次修改
, 以相反的方向重復前面的f、F、t或T查找命令
; 重復前面的f、F、t或T查找命令
“np 取回最后第n次的刪除(緩沖區(qū)中存有一定次數(shù)的刪除內(nèi)容,一般為9)
n 重復前面的/或?查找命令
N 以相反方向重復前面的/或?命令
保存文本和退出vi命令 保存和/或退出操作
:w 保存文件但不退出vi
:w file 將修改保存在file中但不退出vi
:wq或ZZ或:x 保存文件并退出vi
:q! 不保存文件,退出vi
:e! 放棄所有修改,從上次保存文件開始再編輯
vi中的選項選項 作用
:set all 打印所有選項
:set nooption 關閉option選項
:set nu 每行前打印行號
:set showmode 顯示是輸入模式還是替換模式
:set noic 查找時忽略大小寫
:set list 顯示制表符(^I)和行尾符號
:set ts=8 為文本輸入設置tab stops
:set window=n 設置文本窗口顯示n行
vi的狀態(tài)選項 作用
:.= 打印當前行的行號
:= 打印文件中的行數(shù)
^g 顯示文件名、當前的行號、文件的總行數(shù)和文件位置的百分比
:l 使用字母”l”來顯示許多的特殊字符,如制表符和換行符
在文本中定位段落和放置標記選項 作用
{ 在之一列插入{來定義一個段落
>> 向前移到下一個段落的開頭處
m(a-z) 用一個字母來標記當前位置,如用mz表示標記z
‘(a-z) 將光標移動到指定的標記,如用’z表示移動到z
在vi中連接行選項 作用
J 將下一行連接到當前行的末尾
nJ 連接后面n行
光標放置與屏幕調(diào)整選項 作用
H 將光標移動到屏幕的頂行
nH 將光標移動到屏幕頂行下的第n行
M 將光標移動到屏幕的中間
L 將光標移動到屏幕的底行
nL 將光標移動到屏幕底行上的第n行
^e(ctrl+e) 將屏幕上滾一行
^y 將屏幕下滾一行
^u 將屏幕上滾半頁
^d 將屏幕下滾半頁
^b 將屏幕上滾一頁
^f 將屏幕下滾一頁
^l 重繪屏幕
z-return 將當前行置為屏幕的頂行
nz-return 將當前行下的第n行置為屏幕的頂行
z. 將當前行置為屏幕的中央
nz. 將當前行上的第n行置為屏幕的中央
z- 將當前行置為屏幕的底行
nz- 將當前行上的第n行置為屏幕的底行
vi中的shell轉(zhuǎn)義命令選項 作用
:!command 執(zhí)行shell的command命令,如:!ls
:!! 執(zhí)行前一個shell命令
:r!command 讀取command命令的輸入并插入,如:r!ls會先執(zhí)行l(wèi)s,然后讀入內(nèi)容
:w!command 將當前已編輯文件作為command命令的標準輸入并執(zhí)行command命令,如:w!grep all
:cd directory 將當前工作目錄更改為directory所表示的目錄
:sh 將啟動一個子shell,使用^d(ctrl+d)返回vi
:so file 在shell程序file中讀入和執(zhí)行命令
vi中的宏與縮寫
(避免使用控制鍵和符號,不要使用字符K、V、g、q、v、*、=和功能鍵)選項 作用
:map key command_seq 定義一個鍵來運行command_seq,如:map e ea,無論什么時候都可以e移到一個字的末尾來追加文本
:map 在狀態(tài)行顯示所有已定義的宏
:umap key 刪除該鍵的宏
:ab string1 string2 定義一個縮寫,使得當插入string1時,用string2替換string1。當要插入文本時,鍵入string1然后按Esc鍵,系統(tǒng)就插入了string2
:ab 顯示所有縮寫
:una string 取消string的縮寫
在vi中縮進文本選項 作用
^i(ctrl+i)或tab 插入文本時,插入移動的寬度,移動寬度是事先定義好的
:set ai 打開自動縮進
:set sw=n 將移動寬度設置為n個字符
n> 使n行都向右移動一個寬度,例如3>>就將接下來的三行每行都向右移動一個移動寬度
裝VIM~~~~ 孩子~~
linux中vi常用的命令?
鍵盤上Shift+ZZ鍵;d鍵;j,k,l鍵;u鍵等等;
:vi 文件…
: vi 是一個基于行編輯器 ex 上的全屏幕編輯器,可以在vi 中使用 ex,ed的全部命令,vi選項中 -wn 指將編輯窗口大小置為n行,-R 為將編輯的文件置為只讀模式, vi 工作模式分為命令模式和輸入模式,一般情況下在命令模式下,可敲入vi命令,進入輸入模式下時可以編輯要編輯的文本,命令 a A i I o O c C s S R 可進入輸入模式,在輸入模式下按 ESC 鍵可推出輸入模式,回到命令模式,在命令模式中敲入: 命令,則可進入ex方式,在屏幕底部出現(xiàn)提示符 : ,此時可使用任意ex命令,屏幕底行也用來作/ ? ! 命令的提示行,大多數(shù)命令可以在其前面加數(shù)字,表示命令執(zhí)行的重復次數(shù),下面簡單介紹一下vi 的命令集,^ 表示(CTRL)鍵
^B 退回前一頁,前面加數(shù)字表示重復次數(shù),每次換頁時
保留上一頁的兩行
^D 在命令模式下,表示下滾屏幕的一半,在輸入模式下,表示回退至
左邊的自動縮進處
^E 顯示屏幕底線之下的一行悶敏
^F 前進一頁,前面加數(shù)字表示重復次數(shù),每次換頁時
保留上一頁的兩行
^G 顯示當前文件名,當前行號和文件總行數(shù),并用百分號當前行在
整個文件中的位置
^H(退格) 在命令模式下,光標左移一格;在輸入模式下,刪去前面的字符
^I(TAB) 在輸入模式下,產(chǎn)生一串空格
^J(LF) 光標下移一行
^L 刷新屏幕,即將屏幕重新顯示
^M(回車) 在命令模式下,光標移動至下行開頭
在輸入模式下,開辟一新行
^N 光標下移一行
^P 光標上移一行
^Q 在輸入模式下,將其后的非打印字符作為正文插入
^R 刷新屏幕
^U 屏幕上滾一半,前面加數(shù)字時表示上滾的行數(shù),此數(shù)字對
以后的^D ^U 命令有效
^V 在輸入模式下,將其后的非打印字符作為正文插入
^W 在輸入模式下,使光標回退一個字
^Y 顯示屏幕底線之上的一行
^Z 暫停編輯,退回上層Shell
^
! 暫時退出編輯,執(zhí)行Shell命令
(雙引號) 用于標志有名緩沖區(qū),編號緩沖區(qū)1-9用于保存被刪去的正文,字
母名緩沖區(qū)a-z供用戶存放自定義的正文
$ 將光標移動到當前行尾,前加數(shù)字則表示前移行數(shù),如2$表示移動
到下一行行尾
% 將光標移動到配對的小括號()或大括號{}上去
( 退回句子開頭
) 前移到句子開頭
– 退到上一行之一個非空格字符
. 重復上一次改變緩沖區(qū)內(nèi)容的命令
/ 模式向前搜索模式,將光標移動到模式出現(xiàn)處,模式是一個正規(guī)
表達式,(參看 grep)
: 在屏幕底部提示:,其后可使用ex命令
? 功能同 / ,但方向是向前查找
\ 轉(zhuǎn)意符
>> 光標前移至節(jié)分界處
^(不是CTRL) 光標移至當前行之一個非空字符上
‘ 連續(xù)兩個”表示將光標移至其移動前的位置,’后跟字母表示光標字
母標記的行首(參看 m 命令)
A 在行尾插入正文,進入輸入模式
B 光標回退一個字
C 替換光標后的內(nèi)容
D 刪除光標后的內(nèi)容
E 光標前移到字尾
F 字符 在當前行向左查找指定字符
G 光標移動到其前面數(shù)字指定的行,若未指定則移動到最后一行
H 光標移動到屏幕頂行,若前面有數(shù)字,則移動到屏幕上該數(shù)字
指定的行
I 在行開頭插入正文
J 連接兩行,若前面有數(shù)字則連接數(shù)字指定的行
L 光標移動到屏幕底行,若前面有數(shù)字,則移動到屏幕底線往上數(shù)該
數(shù)字指定的行
M 光標移動到屏幕中線
N 使用模式查找/或?時,重復找下一個匹配的模式,但方向與上次相
反,其功能同 n ,但方向相反
O 在液罩肆當前行上開辟一新行
P 將上次被刪除的正文插鬧轎入光標前面,可在其前面加緩沖區(qū)編號,編
號1-9用于保存被刪去的正文,字母名緩沖區(qū)a-z供用戶存放自定
義的正文
Q 從vi 推出進入ex命令狀態(tài)
R 替換字符串
S 替換整行
T 字符 向左查找字符
U 將當前行恢復至之一次修改前的狀態(tài)
W 光標移至下一個字首
X 刪除光標前的字符
Y 將當前行存入無名緩沖區(qū),前面加數(shù)字表示存入的行數(shù),也可用有
名緩沖區(qū)來保存,以后可用命令p或P將其取出
ZZ 存盤退出vi
a 光標后插入正文
b 光標回退至上一個字首
cw 替換當前字
c) 替換當前句子
dw 刪除一個字
dd 刪除一行
e 光標移到下一個字末
f 字符 在當前行向前查找字符
h 光標左移一格
i 在光標前插入正文
j 光標下移一行
k 光標上移一行
l 光標右移一格
m 字母 用字母標記當前行,以后可用 ‘字母使光標移動到當前行,
(參看’命令)
n 重復上次 / 或 ? 命令
o 在當前行下開辟一新行
p 將用戶緩沖區(qū)內(nèi)容放到光標位置(參看P命令)
r 替換當前字符
s 用一串字符替換當前字符
t 字符 光標移動至字符前
u 取消上次操作
w 光標移至下一字首
x 刪除當前字符
yw 將當前字存入無名緩沖區(qū),前面可加x,表示存入名字為x的有名
緩沖區(qū)(x為a-z),也可加數(shù)字表示存入的字數(shù),以后可用P或p命
令取出
yy 將當前行存入無名緩沖區(qū),用法參看yw
{ 光標移動至前一段開頭
| 光標移至行首,若前面加數(shù)字,則移到數(shù)字指定行的行首
} 光標移至下一段開頭
在:提示符下,常用命令如下:
:w 當前文件存盤
:w! 強制存盤
:w 文件 將內(nèi)容寫入指定文件
:w! 文件 強制寫入指定文件
:x,y w 文件 將 x至 y 行寫入指定文件中
:r 文件 將文件讀到光標位置
:r ! 命令將系統(tǒng)命令的輸出讀到光標位置
:q 退出編輯
:q! 強制退出
:x 與命令ZZ相同
:e 文件名 編輯另一文件
:e ! 重新編輯文件,放棄任何改變
:sh 執(zhí)行sh,結(jié)束后回到編輯
:! 命令 執(zhí)行命令后回到編輯
:n 編輯下一文件
:n 文件表 重新定義待編輯文件表
:set 設置 vi 的選項,例如 set nu 表示每行前顯示行號,在選項前
加no則表示清除該選項,例如 set nonu 表示每行前不顯示行
號,下面是一些常用的選項:
ai 自動縮進
aw 編輯下一文件前自動存盤
ic 查找字符串時不區(qū)分大小寫
nu 每行前顯示行號
輸入)及}時顯示與之配對的( 或 {
slow 插入時延遲屏幕刷新
ws 使查找能繞過文件尾從頭進行
光標左移 linux編程的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于光標左移 linux編程,如何在Linux編程中實現(xiàn)光標左移?,linux的vi編輯器的使用方法及比較常用的命令,linux中vi常用的命令?的信息別忘了在本站進行查找喔。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
當前名稱:如何在Linux編程中實現(xiàn)光標左移?(光標左移linux編程)
地址分享:http://www.fisionsoft.com.cn/article/djheseo.html


咨詢
建站咨詢
