目录
- 2.1. VIM
-
- 2.1.1. New text file line delimiter
- 2.1.2. vim中的出现^M
- 2.1.3. tab 符
- 2.1.4. 粘贴是禁用格式化功能
- 2.1.5. Regular Expressions
-
- 2.1.5.1. search & replace
- 2.1.5.2. 会去掉vim文件中的空白行
- 2.1.6. 大小写转换
- 2.1.7. split
- 2.1.8. vimrc
- 2.1.9. vimdiff - edit two or three versions of a file with Vim and show differences
-
- 2.1.9.1. 光标移动
- 2.1.9.2. 文件合并
- 2.1.9.3. 上下文
- 2.1.9.4. 保存于退出
- 2.1.10. vim backup script
- 2.2. Eclipse
-
- 2.2.1. AnyEdit
- 2.2.2. Eclim
- 2.2.3. Vrapper
- 2.3. Komodo Edit
- 2.4. Syntext Serna Free
- 2.5. SciTE
vi
vi file
emacs
emacs
nano/pico
nano file / pico file
joe
joe file
sudo apt-get install joe
2.1. VIM
Vi IMproved - enhanced vi editor (transitional package)
sudo apt-get install vim-perl vim-python vim-latexsuite
2.1.1. New text file line delimiter
:set ff :set ff=dos :set ff=unix :set ff=mac
2.1.2. vim中的出现^M
sudo apt-get install tofrodos dos2unix
输入
:set notextmode
2.1.3. tab 符
set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker
2.1.4. 粘贴是禁用格式化功能
:set paste
2.1.5. Regular Expressions
2.1.5.1. search & replace
%s/neo/leo/g %s#/logs#/www#g
2.1.5.2. 会去掉vim文件中的空白行
:%s/^\s*\n/
2.1.6. 大小写转换
将光标移动到想要大小写转换的地方然后键入
guw (大写转换成小写)
gUw (小写转换成大写)
g~w (是改变光标到词尾)
guu gUU g~~ (是改变一行)
2.1.7. split
:split <filename> 按拆分模式打开文件,默认为上下拆分 :vsplit <filename> 左右拆分
- Ctrl-w w
-
切换活动窗口
- Ctrl-w Ctrl-w
-
同上
- Ctrl-w h/j/k/l
-
切换活动窗口为 左/上/下/右 边的窗口
- :q
-
关闭光标所在的分屏
2.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
2.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
2.1.9.1. 光标移动
左右窗口联动控制
:set scrollbind :set noscrollbind
在各个差异点之间快速移动。
]c 跳转到下一个差异点 [c 跳转到上一个差异点
如果在命令前加上数字的话,可以跳过一个或数个差异点,从而实现跳的更远。比如如果在位于第一个差异点的行输入"2]c",将越过下一个差异点,跳转到第三个差异点。
2.1.9.2. 文件合并
文件比较的最终目的之一就是合并,以消除差异。如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令 dp (diff "put") 如果希望把另一个文件的内容复制到当前行中,可以使用命令 do (diff "get",之所以不用dg,是因为dg已经被另一个命令占用了) 如果希望手工修改某一行,可以使用通常的vim操作。如果希望在两个文件之间来回跳转,可以用下列命令序列: Ctrl-w, w 在修改一个或两个文件之后,vimdiff会试图自动来重新比较文件,来实时反映比较结果。但是也会有处理失败的情况,这个时候需要手工来刷新比较结果: :diffupdate 如果希望撤销修改,可以和平常用vim编辑一样,直接 <ESC>, u 但是要注意一定要将光标移动到需要撤销修改的文件窗口中。
2.1.9.3. 上下文
上下文的展开和查看 比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数,可以这样设置: :set diffopt=context:3 可以用简单的折叠命令来临时展开被折叠的相同的文本行: zo (folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸) 然后可以用下列命令来重新折叠: zc (folding close)
2.1.9.4. 保存于退出
同时操作两个文件 在比较和合并告一段落之后,可以用下列命令对两个文件同时进行操作。比如同时退出: :qa (quit all) 如果希望保存全部文件: :wa (write all) 或者是两者的合并命令,保存全部文件,然后退出: :wqa (write, then quit all) 如果在退出的时候不希望保存任何操作的结果: :qa! (force to quit all)
2.1.10. vim backup script
#!/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
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。