Linux VIM 编辑器

简介:

1. VIM

Vi IMproved - enhanced vi editor (transitional package)

	
sudo apt-get install vim-perl vim-python vim-latexsuite
	
	

1.1. New text file line delimiter

		
:set ff
:set ff=dos
:set ff=unix
:set ff=mac
		
		

1.2. vim中的出现^M

			
sudo apt-get install tofrodos
dos2unix
			
		

输入

:set notextmode		
		

1.3. tab 符

		
set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker
		
		

1.4. 粘贴是禁用格式化功能

:set paste

1.5. Regular Expressions

1.5.1. search & replace

%s/neo/leo/g
%s#/logs#/www#g
			

1.5.2. 会去掉vim文件中的空白行

				
:%s/^\s*\n/
				
			

1.6. 大小写转换

将光标移动到想要大小写转换的地方然后键入

guw (大写转换成小写)

gUw (小写转换成大写)

g~w (是改变光标到词尾)

guu gUU g~~ (是改变一行)

1.7. split

		
:split <filename> 	按拆分模式打开文件,默认为上下拆分
:vsplit <filename>	左右拆分
		
		

Ctrl-w w

切换活动窗口

Ctrl-w Ctrl-w

同上

Ctrl-w h/j/k/l

切换活动窗口为 左/上/下/右 边的窗口

:q

关闭光标所在的分屏

1.8. vimrc

		
neo@netkiller:~$ cat /home/neo/.vimrc
set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker
set paste
set ruler
set number
set nocp " don't open Vim in Vi-compatible mode
set bs=2 " setup backspace to delete previous char in insert mode
set encoding=utf-8 fileencodings= " set UTF-8 for all files
set autoindent
set smartindent
set t_Co=256
syntax on
set syntax=tt2html
set hlsearch
colorscheme elflord
		
		

1.9. vimdiff - edit two or three versions of a file with Vim and show differences

# vimdiff  FILE_LEFT  FILE_RIGHT
# vim -d  FILE_LEFT  FILE_RIGHT
		
# vim FILE_LEFT
:vertical diffsplit FILE_RIGHT
		

1.9.1. 光标移动

左右窗口联动控制

:set scrollbind
:set noscrollbind
			

在各个差异点之间快速移动。

]c	跳转到下一个差异点
[c	跳转到上一个差异点
			

如果在命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。比如如果在位于第一个差异点的行输入"2]c",将越过下一个差异点,跳转到第三个差异点。

1.9.2. 文件合并

			
文件比较的最终目的之一就是合并,以消除差异。如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令
dp (diff "put")

如果希望把另一个文件的内容复制到当前行中,可以使用命令
do (diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)

如果希望手工修改某一行,可以使用通常的vim操作。如果希望在两个文件之间来回跳转,可以用下列命令序列:
Ctrl-w, w

在修改一个或两个文件之后,vimdiff会试图自动来重新比较文件,来实时反映比较结果。但是也会有处理失败的情况,这个时候需要手工来刷新比较结果:
:diffupdate

如果希望撤销修改,可以和平常用vim编辑一样,直接
<ESC>, u

但是要注意一定要将光标移动到需要撤销修改的文件窗口中。
			
			

1.9.3. 上下文

上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置:
:set diffopt=context:3

可以用简单的折叠命令来临时展开被折叠的相同的文本行:
zo (folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)

然后可以用下列命令来重新折叠:
zc (folding close)
			

1.9.4. 保存于退出

同时操作两个文件
在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。比如同时退出:
:qa (quit all)

如果希望保存全部文件:
:wa (write all)

或者是两者的合并命令,保存全部文件,然后退出:
:wqa (write, then quit all)

如果在退出的时候不希望保存任何操作的结果:
:qa! (force to quit all)
			

1.10. vim backup script

这个脚本可以实现,每次存储的时候备份一份到backup文件夹。

			
#!/bin/bash
########################################
# vim script for automatic backup by neo
########################################

datetime=`date +"%Y-%m-%d.%H:%M:%S"`
current_date=`date +"%Y-%m-%d"`
current_time=`date +"%H:%M:%S"`
filename=`basename $1`
original=$1

if [ -f ${original}.original ]
then
    echo "[${datetime}] [B] ${original} to ${original}.original" >> ~/backup/history.log
else
    cp ${original} ${original}.original
fi

if [ -d ~/backup/${current_date} ]
then
    echo "[${datetime}] [O] ${original}" >> ~/backup/history.log
else
    mkdir -p ~/backup/${current_date}
    echo [${datetime}] [C] mkdir ~/backup/${current_date} >> ~/backup/history.log
fi

backup=~/backup/${current_date}/${filename}.${current_time}
if [ -f ${original} ];
then
    cp ${original} ${backup}
    echo "[${datetime}] [B] ${original} to ${backup}" >> ~/backup/history.log
fi

vim ${original}



datetime=`date +"%Y-%m-%d.%H:%M:%S"`
current_date=`date +"%Y-%m-%d"`
current_time=`date +"%H:%M:%S"`
newfile=~/backup/${current_date}/${filename}.${current_time}

if [ -f ${original} ];
then
    if [ -f ${backup} ];
    then
        original_sha=`sha1sum ${backup} |awk -F ' ' '{print $1}'`
        newfile_sha=`sha1sum ${original} |awk -F ' ' '{print $1}'`

        if [ $original_sha = $newfile_sha ];
        then
            echo "[${datetime}] --- " >> ~/backup/history.log
            exit
        fi

    fi
    cp ${original} ${newfile}
    echo "[${datetime}] [M] ${original}" >> ~/backup/history.log
    echo "[${datetime}] [B] ${original} to ${newfile}" >> ~/backup/history.log

fi
echo "[${datetime}] --- " >> ~/backup/history.log
exit

目录
相关文章
|
3月前
|
Ubuntu Linux 测试技术
Linux系统之部署轻量级Markdown文本编辑器
【10月更文挑战第6天】Linux系统之部署轻量级Markdown文本编辑器
173 1
Linux系统之部署轻量级Markdown文本编辑器
|
5月前
|
Unix Linux 开发工具
在Linux中,有哪些基本的 Vim 命令?
在Linux中,有哪些基本的 Vim 命令?
|
2月前
|
搜索推荐 开发工具
Vim编辑器的初步认识和使用
Vim是一款高度可定制的文本编辑器,支持三种主要模式:正常模式、编辑模式和命令行模式。用户可以通过快捷键在不同模式间切换,实现高效编辑。如输入`i`进入编辑模式,`:wq`保存退出,`:s`进行文本替换等。Vim还支持个性化配置,通过编辑`.vimrc`文件可设置语法高亮、自动缩进等功能,极大提升了编辑体验。
48 2
|
2月前
|
数据可视化 Unix 开发工具
VIM编辑器
本文介绍了VIM编辑器的特点和使用方法,包括VIM的定义、安装步骤、四种工作模式(命令模式、编辑模式、末行模式、可视模式)及其基本操作。重点讲解了命令模式下的光标移动、编辑、搜索、撤销等操作,以及末行模式下的文件保存、退出等快捷键。此外,还涉及了VIM的高级操作,如窗口分割和调整。
|
3月前
|
存储 运维 搜索推荐
|
3月前
|
Java Unix Linux
Linux vi/vim
Linux vi/vim
36 5
|
3月前
|
机器学习/深度学习 Linux 编译器
Linux入门3——vim的简单使用
Linux入门3——vim的简单使用
70 1
|
3月前
|
IDE 搜索推荐 开发工具
LunarVim,vim编辑器推荐
【10月更文挑战第9天】
|
3月前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
41 0
|
4月前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件