Linux下vi的使用

编辑器vi

关于vi

vi是Linux系统中一种文本编辑器,它的使用方法和界面与Unix平台十分相似。掌握了vi的命令,你可以感觉到它强大的功能与高效。

vi相对来说比较小,无论你使用任何Linux系统,你总是可以使用vi的。在很多系统中,可能只有vi供你选择。

vim 是vi的高级版本,兼容vi,功能更强大。

vi的基本操作 

vim的进入与离开
进入vim在系统提示字符下键入: vim <文件名称>
离开vim:q退出vim
:q!不保存强制退出vim
:wq保存后再离开
模式切换在插入模式和底行模式下用[Esc]键切换到命令行模式。

vi的三种模式(常用指令)

 

命令行模式开始编辑命令i在光标前输入文本
o在当前行后输入新一行
O在当前行前输入新一行
光标移动命令b移动到当前单词的开始
e移动到当前单词的结尾
删除命令x删除光标所在的字符
dd删除当前行
#dd删除当前行以后的#行
改变与替换操作命令r替换光标所在的字符
C替换自光标位置至行尾所有字符
cc替换当前行
cw替换一个单词
拷贝和粘贴命令yy将当前行复制到粘贴板
#yy将当前行后的#行复制到粘贴板
p将粘贴板中的内容粘贴在光标后
其他有用的命令u撤销
gg移动到第一行行首
G移动到最后一行行首
nG跳到第n行
底行模式设置viset nu显示行号
set nonu隐藏行号
set autoindent 智能缩进
set mouse=a开启鼠标
文件保存及退出命令参照离开vim
查询命令/abc向后查询abc
?abc向前查询abc
n向后继续查询
N向前继续查询
替换与查找:s/old/new替换该行第一个old为new
:s/old/new/g可以替换全行中所有的old为new
:#,#s/old/new/g替换两行之间出现的old为new,#,#为两行的行号
:%s/old/new/g替换全文的old为new
:%s/old/new/gc全文替换前需确认
插入模式只有在输入模式下,才可以输入文字。在命令模式下输入(i,a,A等),可进入输入模式,输入模式下按ESC,可返回命令模式。

关于vimrc

vimrc文件是vim的环境设置文件。

         整体的vim的设置是在 /etc/vim/vimrc 文件中。如果想设置所有用户的配置,在里面设置就可以了,配置和.vimrc是一样的,在最后面添加下面2中的语句。

         不建议修改/etc/vimrc 文件,每个用户可以在用户根目录中设置vim,新建.vimrc。

附自用vimrc

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
   set fileencodings=utf-8,latin1
endif

set nocompatible        " Use Vim defaults (much better!)
set bs=indent,eol,start         " allow backspacing over everything in insert mode
"set ai                 " always set autoindenting on
"set backup             " keep a backup file
set viminfo='20,\"50    " read/write a .viminfo file, don't store more
                        " than 50 lines of registers
set history=50          " keep 50 lines of command line history
set ruler               " show the cursor position all the time
set mouse=a
set cursorline
set foldmethod=manual
set completeopt=preview,menu
set autoindent
vmap<C-c> "+y
set number
let Tlist_Use_Ringht_window = 1
" Only do this part when compiled with support for autocommands
if has("autocmd")
  " In text files, always limit the width of text to 78 characters
  autocmd BufRead *.txt set tw=78
  " When editing a file, always jump to the last cursor position
  autocmd BufReadPost *
  \ if line("'\"") > 0 && line ("'\"") <= line("$") |
  \   exe "normal! g'\"" |
  \ endif
endif

if has("cscope") && filereadable("/usr/bin/cscope")
   set csprg=/usr/bin/cscope
   set csto=0
   set cst
   set nocsverb
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
" add any database in current directory
   if filereadable("cscope.out")
      cs add cscope.out
   " else add database pointed to by environment
   elseif $CSCOPE_DB != ""
      cs add $CSCOPE_DB
   endif
   set csverb
endif

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

if &term=="xterm"
     set t_Co=8
     set t_Sb=[4%dm
     set t_Sf=[3%dm
endif





".c .h .hpp .cpp 等文件时自动调用SetTitle 函数"
 autocmd BufNewFile *.[ch],*.hpp,*.cpp exec ":call SetTitle()"
 " 加入注释 
func SetComment()
    call setline(1,"/*****************************************************")    
    call append(line("."),   "    > File name: ".expand("%:t"))
    call append(line(".")+1, "    > Author: Mr.DONG")
    call append(line(".")+2, "    > 日期: ".strftime("%Y-%m-%d %H:%M"))
    call append(line(".")+3, "*****************************************************/")
endfunc

" 定义函数SetTitle,自动插入文件头 
func SetTitle()
    call SetComment()
    call append(line(".")+4, "")
    call append(line(".")+5, "#include <stdio.h>")
    call append(line(".")+6, "")
    call append(line(".")+7, "int main()")
    call append(line(".")+8, "{")
    call append(line(".")+9, "")
    call append(line(".")+10, "    return 0;")
    call append(line(".")+11, "}")
endfunc


"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i

function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
    else
        return a:char
    endif
endfunction
filetype plugin indent on 
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu


"C,C++ 按F5编译运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()

    exec "w"
        if &filetype == 'c'"
            exec "!g++ % -o %<"
            exec "! ./%<"
        elseif &filetype == 'cpp'
            exec "!g++ % -o %<"
            exec "! ./%<"
        elseif &filetype == 'java'
            exec "!javac %" 
            exec "!java %<"
        elseif
            &filetype== 'sh'
            :!./%
        endif                                       
endfunc


"代码补全 
set completeopt=preview,menu 

"let Tlist_Use_Right_Window = 1  " 在右侧显示窗口  "

" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y

打开vim效果

练习 

1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录; 
2. 进入 vitest 这个目录当中; 
3. 将 /etc/man.config 拷贝到本目录底下
4. 使用 vi 开启本目录下的 man.config 这个档案; 
5. 在 vi 中设定一下行号; 
6. 移动到第 58 行,向右移动 40 个字符,请问您看到的双引号内是什么目录? 
7. 移动到第一行,并且向下搜寻一下“bzip2”这个字符串,请问他在第几行? 
8. 接着下来,我要将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修改,如何下达指令? 
9. 修改完之后,突然反悔了,要全部复原,有哪些方法? 
10. 我要复制 51 到 60 行这十行的内容,并且贴到最后一行之后; 
11. 删除 11 到 30 行之间的 20 行; 
12. 将这个文件另存成一个 man.test.config 的文件; 
13. 到第 29 行,并且删除 15 个字符; 
14. 储存后离开
 

答案:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vi是一款常用的文本编辑器,也是Linux系统中自带的编辑器之一。使用vi可以编辑各种类型的文件,包括代码文件、配置文件等。以下是vi编译器的使用方法: 1. 打开文件:在终端中输入vi命令,后跟文件名,即可打开文件。例如:vi test.txt 2. 进入编辑模式:打开文件后,按下i键即可进入编辑模式,此时可以进行文本编辑。 3. 保存文件:在编辑模式下,按下Esc键,然后输入:wq即可保存文件并退出vi。 4. 取消编辑:在编辑模式下,按下Esc键,然后输入:q!即可取消编辑并退出vi。 5. 光标移动:在编辑模式下,可以使用方向键或h、j、k、l键来移动光标。 6. 复制、粘贴:在命令模式下,按下yy可以复制当前行,按下p可以将复制的内容粘贴到光标所在位置。 7. 查找、替换:在命令模式下,按下/可以进行查找,按下:%s/old/new/g可以进行替换。 以上是vi编译器的基本使用方法,掌握这些方法可以更加高效地进行文本编辑。 ### 回答2: Vi是一种用于编辑文本文件的文本编辑器,在Linux系统中被广泛应用。Vi是非常基础的文本编辑器,可以通过简单的命令完成编辑、修改和保存文本的操作。下面将详细介绍Vi编辑器的基础命令。 1. 打开文件 在Linux系统下,使用Vi打开文件命令是:vi filename。如果文件不存在,则会创建一个新的文件。如果文件存在,则会在编辑器中打开该文件。 2. 模式 Vi编辑器有两种模式:命令模式、编辑模式。 命令模式:启动编辑器以后,第一次进入的模式就是命令模式,此时只能输入命令,不能编辑内容。常用的命令有:i,o,a,d和wq等。 编辑模式:在命令模式下敲入i、o和a之后就进入了编辑模式,此时可以编写、修改和删除文章内容。 3. 移动光标 在命令模式下,移动光标使用方向键,或者h、j、k和l键,分别表示左、下、上、右移动。 4. 插入和删除文本 进入编辑模式后,使用i、o和a键可以插入文本,同时使用x、d和dd键可以删除文本,其中dd键是删除一整行。 5. 搜索和替换 在命令模式下输入"/字符串",按回车键可以搜索文章中是否包含该字符串;而":s/字符串/替换字符串/g"则表示将文章中所有的该字符串替换为新的字符串。 6. 保存和退出 在命令模式下,输入:wq即可保存并退出编辑器,如果只是想保存文本,而不退出编辑器,则输入:w即可。 以上就是Vi编辑器的基础命令,在Linux系统中,Vi是必不可少的编辑器,待熟练掌握以后,会给工作和学习带来很大的帮助。 ### 回答3: vi是一种文本编辑器,它是Linux下最常使用的编辑器之一。很多开发者喜欢使用vi编辑器来编写程序和配置文件,因为它支持快速的文本编辑和灵活的自定义。使用vi编辑器需要一定的学习成本,但一旦熟练掌握,它的效率和功能力是无可比拟的。以下是关于如何使用vi编辑器的几个重要方面。 1.命令模式和编辑模式 vi有两种模式:命令模式和编辑模式。命令模式下,所有击键会被认为是命令,例如查找、删除、移动光标等操作;在编辑模式下,击键会被认为是输入文本。默认情况下,vi启动后是进入命令模式。如果需要输入文本,则需要按下“i”键进入编辑模式。 2.保存和退出 在命令模式下,可以输入“:w”命令保存文件,输入“:wq”命令保存文件并退出vi编辑器,输入“:q”命令退出vi编辑器(如果文件有修改,会提示保存或放弃修改),输入“:q!”命令强制退出vi编辑器,不保存修改。 3.光标移动和编辑操作 在命令模式下,可以使用方向键或h、j、k、l键来移动光标。h键向左移动,l键向右移动,j键向下移动,k键向上移动。在编辑模式下,可以输入文本,使用退格键删除文本,使用ESC键退出编辑模式。 4.查找和替换 在命令模式下,可以使用“/”和“?”命令查找内容。例如,输入“/word”可以查找包含word的文本行;输入“?word”可以查找上一个包含word的文本行。要进行替换操作,可以使用“:s/old/new/g”命令,将字符串old替换为new。其中,g表示全局替换,如果不加g,则只替换第一次出现的字符串。 总之,viLinux下一款强大的文本编辑器,学习成本比较高,但一旦掌握了它的使用方法,就可以提高文本编辑的效率,并且适用于各种编程语言和操作系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值