您的位置:首页 > 运维架构 > Linux

linux下vim的配置及常用命令

2018-03-24 21:37 302 查看
VIM是从VI发展出来的一个Linux下的文本编辑器,相比于Vi,Vim可以完美兼容Vi,更在Vi的基础上增加了许多使用功能。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。1.Vim的三种模式:命令行模式,文本输入模式和末行模式。

命令行模式 (command mode/一般模式)
  任何时候,不管用户处于何种模式,只要按一下“Esc”键,即可使Vim进入命令行模式;
 
文本输入模式 (input mode/编辑模式)
  在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vim当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按"Esc"键即可。

末行模式 (last line mode/指令列命令模式)
  末行模式也称ex转义模式。
  Vim和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vim中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。Vim有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vim会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vim自动回到命令模式。
 2.vim的配置问题,在linux下进行编程,假如我们不对vim进行配置的话那么在编程的时候将是一件非常痛苦的事情。但如果我们进行了一系列配置,那么写起代码来就跟在windows下编程没有什么区别,甚至比windows还要方便。下面列出一些配置vim的命令。当然配置时要根据自己的个人习惯来进行配置。更改根目录下/etc/vimrc文件即可;
set tags=/root/linux-3.17.2/tags
set nocompatible            " 关闭 vi 兼容模式
syntax on                   " 自动语法高亮
set number                  " 显示行号
set autoindent              " 自动对齐
set smartindent             " 智能对齐
set cursorline              " 突出显示当前行
set ruler                   " 打开状态栏标尺
set ts=4                    " 设定 tab 长度为 4
set tabstop=1               " 设定 tab 长度为 4
set expandtab               " use space instead of tab
set shiftwidth=0            " 设定 > 命令移动时的宽度为 4
set softtabstop=1           " 使得按退格键时可以一次删掉 4 个空格
set nobackup                " 覆盖文件时不备份
set autochdir               " 自动切换当前目录为当前文件所在的目录
filetype plugin indent on   " 开启插件
set backupcopy=yes          " 设置备份时的行为为覆盖
set ignorecase smartcase    " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan              " 禁止在搜索到文件两端时重新搜索
set incsearch               " 输入搜索内容时就显示搜索结果
set hlsearch                " 搜索时高亮显示被找到的文本
set noerrorbells            " 关闭错误信息响铃
set novisualbell            " 关闭使用可视响铃代替呼叫
set t_vb=                   " 置空错误铃声的终端代码
" set showmatch               " 插入括号时,短暂地跳转到匹配的对应括号
" " set matchtime=2             " 短暂跳转到匹配括号的时间
" set magic                   " 设置魔术
" set hidden                  " 允许在有未保存的修改时切换缓冲区,此时的修改由
" vim 负责保存
" set guioptions-=T           " 隐藏工具栏
" set guioptions-=m           " 隐藏菜单栏
" set smartindent             " 开启新行时使用智能自动缩进
set backspace=indent,eol,start
"                             " 不设定在插入状态无法用退格键和 Delete
"                             键删除回车符
"                             set cmdheight=1             " 设定命令行的行数为
"                             1
"                             set laststatus=2            " 显示状态栏
"                             (默认值为 1, 无法显示状态栏)
"                             set statusline=\ % @=((foldclosed(line('.'))
"                                                         " 用空格键来开关折叠
"                                                         " return OS type,
"                                                         eg: windows, or
"                                                         linux, mac, et.st..
"                                                         function! MySys()
"                                                             if has("win16")
"                                                             || has("win32")
"                                                             || has("win64")
"                                                             || has("win95")
"                                                                     return
"                                                                     "windows"
"                                                                         elseif
"                                                                         has("unix")
"                                                                                 return
"                                                                                 "linux"
"                                                                                     endif
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

配置时按照自己个人习惯进行修改。双引号代表注释,类似于C++中//

3.vim的常用命令vim/vi的文件内、跨文件复制粘贴操作

1、用vim打开一个文件1.txt

2、在普通模式下,输入:":sp"(不含引号)横向切分一个窗口,或者":vsp"纵向切分一个窗口,敲入命令后,你将看到两个窗口打开的是同一个文件

3、在普通模式下,输入:":e 2.txt",在其中一个窗口里打开另一个文件

4、切换到文件(1.txt)的窗口,在普通模式下,把光标移到你需要复制内容的起始行,然后输入你想复制的行的数量(从光标所在行往下计算),在行数后面接着输入yy,这样就将内容复制到临时寄存器里 了(在普通模式下ctrl+w,再按一下w,可以在两个窗口之间切换)

5、切换到目标文件(2.txt)窗口,把光标移到你接收复制内容的起始行,按一下p,就完成复制了。

在taglist窗口中,还可以使用下面的快捷键:
<CR>          跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
<Space>       显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x            taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
<F1>          显示帮助
可以用“:TlistOpen”打开taglist窗口,用“:TlistClose”关闭taglist窗口。或者使用“:TlistToggle”在打开和关闭间切换。在我的vimrc中定义了下面的映射,使用“,tl”键就可以打开/关闭taglist窗口:
6、切换工作区:ctrl+ww
命令行模式下:

i:在当前字符的左边插入I:在当前行首插入a:在当前字符的右边插入A:在当前行尾插入o:在当前行下面插入一个新行O:在当前行上面插入一个新行c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。d{motion}:和上面差不多,但是不进入插入模式。
d:剪贴选择的内容到剪贴板。y:拷贝选择的内容到剪贴板。c:剪贴选择的内容到剪贴板并且进入插入模式。在非可视选择模式下剪切和拷贝如果你很清楚的知道你想拷贝或者剪切什么,那你根本就不需要进入可视选择模式。这样也会节省时间:d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如,dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。y{motion}:和上面类似,不过是拷贝。c{motion}:和 d{motion} 类似,不过最后进入插入模式。dd:剪切当前行。yy:拷贝当前行。cc:剪切当前行并且进入插入模式。D:剪切从光标位置到行尾到剪贴板。Y:拷贝当前行。C:和 D 类似,最后进入插入模式。x:剪切当前字符到剪贴板。s:和x类似,不过最后进入插入模式。末行模式:

:wq 保存并退出zz 保存并退出

:q! 强制退出并忽略所有更改:e! 放弃左右修改,并打开原来文件

鼠标没电了 很烦 飘于远方我路上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: