基數行與偶數行分組
使用Vim的替換命令,可以輕鬆地將基數行和偶數行分組:
%s/\(^.*$\)\n\(^.*$\)/\1 \2/g
然後,刪除所有的基數行:
%s/^.*$\n\(^.*$\)/\1/g
刪除重複行
在Vim中刪除重複行是一個常見的操作,以下是幾種方法:
刪除相鄰重複行
:g/\(.\+\)$\n\1/d
刪除不相鄰重複行
使用排序命令刪除不相鄰的重複行:
:sort u
刪除重複行,結果按照原順序排列
為了儲存原有順序,首先給每行加上行號和1個{
:
:let i=1|g/^/s//\=i.'{'/|let i+=1
按照行號後面的內容排序:
:sort /^\d\{-}/
刪除行號後面的內容相同的行保留後面的行:
:g/^\d\{-}\{.∗$\n\d\{-}\{1$/d
按照行號恢復順序:
:sort n
刪除空白行
刪除檔案中的空白行:
%g/^\s*$/d
新增序號
有多種方法可以為文字新增序號:
透過let變數
let i=1 | g/^/s//\=i.' '/ | let i=i+1
直接使用行號
:g/^/ s//\=line('.').' '
使用range()函式
:for i in range(1, 31)
: call setline(i, i .' '. getline(i))
:endfor
利用Vim的程式設計支援
:python <<EOF
from vim import current
for i in range(len(current.buffer)):
current.buffer[i] = str(i+1) + ' ' + current.buffer[i]
EOF
外部命令
使用外部命令如findstr
, sed
, diff
, perl
, python
等為文字新增序號:
:%!findstr /N "^"
:%!sed =|sed "N;s/\n/ /"
:%!diff --line-format=%dn%L % -
:%!perl -pe "print ++$a . ' '"
:%!python -c "import sys,fileinput as f;[sys.stdout.write(str(f.lineno())+a) for a in f.input()]"
檢視檔案行數、列數、字元數及所佔位元組大小
檢視檔案的行數、列數、字元數及所佔位元組大小:
g + <Ctrl-g>