本文共 4633 字,大约阅读时间需要 15 分钟。
目录
vi
vi file
emacs
emacs
nano/pico
nano file / pico file
joe
joe file
sudo apt-get install joe
Vi IMproved - enhanced vi editor (transitional package)
sudo apt-get install vim-perl vim-python vim-latexsuite
:set ff:set ff=dos:set ff=unix:set ff=mac
sudo apt-get install tofrodosdos2unix
输入
:set notextmode
set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker
:set paste
%s/neo/leo/g%s#/logs#/www#g
:%s/^\s*\n/
将光标移动到想要大小写转换的地方然后键入
guw (大写转换成小写)
gUw (小写转换成大写)
g~w (是改变光标到词尾)
guu gUU g~~ (是改变一行)
:split按拆分模式打开文件,默认为上下拆分:vsplit 左右拆分
切换活动窗口
同上
切换活动窗口为 左/上/下/右 边的窗口
关闭光标所在的分屏
neo@netkiller:~$ cat /home/neo/.vimrcset expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=markerset pasteset rulerset numberset nocp " don't open Vim in Vi-compatible modeset bs=2 " setup backspace to delete previous char in insert modeset encoding=utf-8 fileencodings= " set UTF-8 for all filesset autoindentset smartindentset t_Co=256syntax onset syntax=tt2htmlset hlsearchcolorscheme elflord
# vimdiff FILE_LEFT FILE_RIGHT# vim -d FILE_LEFT FILE_RIGHT
# vim FILE_LEFT:vertical diffsplit FILE_RIGHT
左右窗口联动控制
:set scrollbind:set noscrollbind
在各个差异点之间快速移动。
]c 跳转到下一个差异点[c 跳转到上一个差异点
如果在命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。比如如果在位于第一个差异点的行输入"2]c",将越过下一个差异点,跳转到第三个差异点。
文件比较的最终目的之一就是合并,以消除差异。如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令dp (diff "put")如果希望把另一个文件的内容复制到当前行中,可以使用命令do (diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)如果希望手工修改某一行,可以使用通常的vim操作。如果希望在两个文件之间来回跳转,可以用下列命令序列:Ctrl-w, w在修改一个或两个文件之后,vimdiff会试图自动来重新比较文件,来实时反映比较结果。但是也会有处理失败的情况,这个时候需要手工来刷新比较结果::diffupdate如果希望撤销修改,可以和平常用vim编辑一样,直接, u但是要注意一定要将光标移动到需要撤销修改的文件窗口中。
上下文的展开和查看比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置::set diffopt=context:3可以用简单的折叠命令来临时展开被折叠的相同的文本行:zo (folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)然后可以用下列命令来重新折叠:zc (folding close)
同时操作两个文件在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。比如同时退出::qa (quit all)如果希望保存全部文件::wa (write all)或者是两者的合并命令,保存全部文件,然后退出::wqa (write, then quit all)如果在退出的时候不希望保存任何操作的结果::qa! (force to quit all)
#!/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=$1if [ -f ${original}.original ]then echo "[${datetime}] [B] ${original} to ${original}.original" >> ~/backup/history.logelse cp ${original} ${original}.originalfiif [ -d ~/backup/${current_date} ]then echo "[${datetime}] [O] ${original}" >> ~/backup/history.logelse mkdir -p ~/backup/${current_date} echo [${datetime}] [C] mkdir ~/backup/${current_date} >> ~/backup/history.logfibackup=~/backup/${current_date}/${filename}.${current_time}if [ -f ${original} ];then cp ${original} ${backup} echo "[${datetime}] [B] ${original} to ${backup}" >> ~/backup/history.logfivim ${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.logfiecho "[${datetime}] --- " >> ~/backup/history.logexit