博舍

Linux学习3:Ubuntu下文本编辑 怎样使用文本编辑器

Linux学习3:Ubuntu下文本编辑

ubuntu下文本编辑会是一个常用的操作,Ubuntu有一个自带的文本编辑器,就是Gedit。这里我们要了解的是另外一个编辑器:VI/VIM编辑器。

如果需要在终端模式下进行文本编辑或者修改文件就可以用VI/VIM编辑器,Ubuntu自带了VI编辑器,但是它不是很方便(如:不能用键盘上的上下左右键移动光标)。故这里推荐使用VIM编辑器,VIM编辑器是VI编辑器的升级版本,VI/VIM编辑器都是一种基于指令式的编辑器,不需要鼠标也不需要菜单,仅仅使用键盘完成所有的编辑工作。

1、安装VIM编辑器

使用如下命令完成VIM编辑器的安装:

sudoapt-getinstallvim

安装完成以后就可以使用VIM编辑器了,VIM编辑器有3种工作模式:输入模式,指令模式和底行模式,通过切换不同的模式可以完成不同的功能;

2、利用VIM编辑器编辑文本-输入模式

举例说明一下:如建立一个test.txt的文件对其进行操作,来说明VIM编辑器的操作;

vimtest.txt

输入如上命令便会建立并打开一个test.txt的文件;

注意:如果test.txt已经存在则只会打开这个文件;

VIM默认是以只读模式打开的文档;要对其进行输入需要切换到输入模式,切换到输入模式的命令如下:

i:在当前光标所在的字符前面,转为输入模式;

I: 在当前光标所在行的行首,转换为输入模式;

a:在当前光标所在字符的后面,转换为输入模式;

A:在光标所在的行尾,转换为输入模式;

o:在当前光标所在行的下方,新建一行,并转为输入模式;

O:在当前光标所在行的上方,新建一行,并转为输入模式;

s:删除光标所在字符;

r:替换光标处字符;

最常用的是a,在键盘按下a后,终端左下角会提示“插入(insert)”字样;

3、利用VIM编辑器编辑文本-指令模式

要将编辑好的文本进行光标操作、屏幕翻滚操作、复制/删除和粘贴需要在指令模式下进行,在键盘上按下“ESC”键,终端左下角的insert消失了,VIM进入了指令模式;

指令有如下这些:

移动光标指令:

    

屏幕翻滚指令:

复制、粘贴和删除指令:

3、利用VIM编辑器编辑文本-底行模式

编辑好的文本保存需要在底行模式下进行,进入底行模式,需要先按“ESC”进入指令模式,然后输入“:”才会进入底行模式;

如上图所示,进入底行模式后终端左下角会出现一个“:”号,在这里就可以输入相应的命令;

常用命令如下:

x:  保存当前文档并退出;

q:  退出;

w:  保存文档;

q!: 退出VI/VIM,不保存文档;

手把手教你用C#编写一个简单的文本编辑器

接着修改窗体的属性,窗体名字修改为EditorForm,窗体的text属性修改为你要的命名。在工具箱了选择MenuStrip控件如图,把菜单拖到窗体去!

然后选择插入标准项

插入完菜单之后,再从工具箱里拖一个RichTextBox到菜单下面,然后选择停靠父容器,最后一个简单的编辑器的界面出来了!如图:

-----------------------------------------------------------------------------------------------------------------------------------------

好了,界面我们已经设计好了,现在我们来实现功能了!首先从工具箱里面拖一个叫做openFileDialog的控件,这是一个用于打开文件的对话框来的,把这个拖到窗体,然后点击一下OpenFileDialog选定此控件,设置Filter属性默认文本(*.txt)|*.txt|富文本文件(*.rtf)|*.rtf。当然以后功能扩充后,可以打开别的文件,例如设置Filter的属性为括号里的(数据库文件(*.dat)|*.dat|图像文件(*jpg;*bmp;*gif)|*jpg;*bmp;*gif|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*)。(注意,次数是用于打开文件对话框对要打开的文件进行筛选的,我们这里只是做简单的文本编译器,所以支持的格式分别是.txt和.rtf格式的文本),最后双击菜单的打开菜单出现

privatevoid打开OToolStripMenuItem_Click(objectsender,EventArgse){//确定用户选择了文件if(this.openFileDialog.ShowDialog()==DialogResult.OK){//得到用户选择的文件路径和文件名path=this.openFileDialog.FileName;//读取文件内容this.LoadFile();}}privatevoidLoadFile(){if(this.openFileDialog.FilterIndex==1){//纯文本文件this.richTextBox1.LoadFile(path,RichTextBoxStreamType.PlainText);}if(this.openFileDialog.FilterIndex==2){this.richTextBox1.LoadFile(path,RichTextBoxStreamType.RichText);}}我们要在里面写代码实现把PC机上的文件打开到我们的编辑器中进行简单的文字编译了,但是在写代码前,我们要定义一个全局变量,用于记录是否文件是新建的,还是打开来编辑的,我们要把这个变量定义为stringpath=null;

附上所有代码

刚刚学习不久,功能没有完全的实现

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceSimpleEditor{publicpartialclassEditorForm:Form{stringpath=null;stringisSaved="n";intinitLenglt=0;publicEditorForm(stringpath){this.path=path;InitializeComponent();}privatevoid新建NToolStripMenuItem_Click(objectsender,EventArgse){if(this.richTextBox1.TextLength>0&&(isSaved.Equals("n"))){if(MessageBox.Show("文件没有保存是否新建文件?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.Yes){this.richTextBox1.Clear();this.Text="简单的编辑器";this.initLenglt=richTextBox1.TextLength;}}else{this.richTextBox1.Clear();this.Text="简单的编辑器";this.initLenglt=richTextBox1.TextLength;}}privatevoid打开OToolStripMenuItem_Click(objectsender,EventArgse){//确定用户选择了文件if(this.openFileDialog.ShowDialog()==DialogResult.OK){//得到用户选择的文件路径和文件名path=this.openFileDialog.FileName;//读取文件内容this.OpenFile();}}privatevoidOpenFile(){try{stringextName=this.path.Substring(this.path.LastIndexOf("."));if(extName.ToLower().Equals(".txt")){//纯文本文件this.richTextBox1.LoadFile(path,RichTextBoxStreamType.PlainText);}if(extName.ToLower().Equals(".rtf")){this.richTextBox1.LoadFile(path,RichTextBoxStreamType.RichText);}this.Text="文本编辑器"+path;this.isSaved="y";}catch(Exceptionex){MessageBox.Show("请选择合适文件,打开失败");}}privatevoid保存SToolStripMenuItem_Click(objectsender,EventArgse){if(string.IsNullOrEmpty(this.path)){this.saveFileDialog1.Title="保存为";if(this.saveFileDialog1.ShowDialog()==DialogResult.OK){this.path=this.saveFileDialog1.FileName;SaveFile();}}else{stringextNanme=path.Substring(this.path.LastIndexOf("."));if(extNanme.ToLower().Equals(".txt")){this.richTextBox1.SaveFile(this.path,RichTextBoxStreamType.PlainText);}if(extNanme.ToLower().Equals(".rtf")){this.richTextBox1.SaveFile(this.path,RichTextBoxStreamType.RichText);}}this.initLenglt=richTextBox1.TextLength;}privatevoidSaveFile(){try{if(this.saveFileDialog1.FilterIndex==1){//纯文本文件this.richTextBox1.SaveFile(path,RichTextBoxStreamType.PlainText);}if(this.saveFileDialog1.FilterIndex==2){this.richTextBox1.SaveFile(path,RichTextBoxStreamType.RichText);}this.Text="文本编辑器"+path;this.initLenglt=richTextBox1.TextLength;this.isSaved="y";}catch(Exceptionex){}}privatevoid另存为AToolStripMenuItem_Click(objectsender,EventArgse){if(this.saveFileDialog1.ShowDialog()==DialogResult.OK){this.path=this.saveFileDialog1.FileName;SaveFile();}}privatevoidEditorForm_Load(objectsender,EventArgse){this.剪切TToolStripMenuItem.Enabled=false;this.复制CToolStripMenuItem.Enabled=false;if(!string.IsNullOrEmpty(this.path)){this.OpenFile();}}privatevoid字体ToolStripMenuItem_Click(objectsender,EventArgse){try{stringextName=this.path.Substring(this.path.LastIndexOf("."));if(extName.ToLower().Equals(".txt")){this.SettxtFont();}if(extName.ToLower().Equals(".rtf")){this.SetRichtextFont();}}catch(Exceptionex){}}privatevoidSettxtFont(){if(this.fontDialog1.ShowDialog()==DialogResult.OK){Fontfont=this.fontDialog1.Font;this.richTextBox1.Font=font;}}privatevoidSetRichtextFont(){if(this.fontDialog1.ShowDialog()==DialogResult.OK){Fontfont=this.fontDialog1.Font;this.richTextBox1.SelectionFont=font;}}privatevoid字体颜色ToolStripMenuItem_Click(objectsender,EventArgse){stringextName=this.path.Substring(this.path.LastIndexOf("."));if(extName.ToLower().Equals(".rtf")){if(this.colorDialog1.ShowDialog()==DialogResult.OK){Colorcolor=this.colorDialog1.Color;this.richTextBox1.SelectionColor=color;}}}privatevoid剪切TToolStripMenuItem_Click(objectsender,EventArgse){if(richTextBox1.SelectionLength>0){this.richTextBox1.Cut();}}privatevoid粘贴PToolStripMenuItem_Click(objectsender,EventArgse){this.richTextBox1.Paste();}privatevoid复制CToolStripMenuItem_Click(objectsender,EventArgse){if(richTextBox1.SelectionLength>0){this.richTextBox1.Copy();}}privatevoidrichTextBox1_SelectionChanged(objectsender,EventArgse){if(richTextBox1.SelectionLength>0){this.剪切TToolStripMenuItem.Enabled=true;this.复制CToolStripMenuItem.Enabled=true;}else{this.剪切TToolStripMenuItem.Enabled=false;this.复制CToolStripMenuItem.Enabled=false;}}privatevoid编辑EToolStripMenuItem_Click(objectsender,EventArgse){}privatevoid全选AToolStripMenuItem_Click(objectsender,EventArgse){this.richTextBox1.SelectedText.ToString();}privatevoid退出XToolStripMenuItem_Click(objectsender,EventArgse){this.Close();}privatevoidEditorForm_FormClosing(objectsender,FormClosingEventArgse){if(this.richTextBox1.TextLength>this.initLenglt){if(MessageBox.Show("文件没有保存是否退出?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.No){e.Cancel=true;}}}privatevoid关于AToolStripMenuItem_Click(objectsender,EventArgse){AboutBoxaboutbox=newAboutBox();aboutbox.ShowDialog();}privatevoid撤消UToolStripMenuItem_Click(objectsender,EventArgse){this.richTextBox1.Undo();}}}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇