经常需要用到列编辑这种操作,现在很多超文本的编辑器都可以轻松实现。 但有时需要在vi界面直接使用,但是vi的列编辑操作因不常使用总是忘记现查。 这次干脆记录下加深印象。 vi编辑某个文本时,比如修改一个oracle的参数文件,历史实验时取的实例名字是jyzhao, 如今实验我已经成功改成prod了,如下:
代码语言:javascript复制*.audit_file_dest='/opt/app/oracle/admin/prod/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.4.0'
*.control_files=' DATA/prod/controlfile/current.265.1083233741'
*.db_block_size=8192
*.db_create_file_dest=' DATA'
*.db_domain=''
*.db_file_name_convert=' data/prod',' data/mynas'
*.db_name='prod'
*.db_unique_name='mynas'
*.diagnostic_dest='/opt/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=prodXDB)'
*.enable_goldengate_replication=TRUE
*.fal_server='prod'
prod1.instance_number=1
prod2.instance_number=2
*.log_archive_config='DG_CONFIG=(prod,mynas)'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mynas'
*.log_archive_dest_2='SERVICE=prod VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prod'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert=' data/prod',' data/mynas',' fra/prod',' fra/mynas'
*.open_cursors=300
*.pga_aggregate_target=1290797056
*.processes=150
*.remote_listener='jyrac-scan:1521'
*.remote_login_passwordfile='exclusive'
*.sga_target=2008023040
*.standby_file_management='AUTO'
prod2.thread=2
prod1.thread=1
prod1.undo_tablespace='UNDOTBS1'
prod2.undo_tablespace='UNDOTBS2'
上面是改完的,如果名字不匹配启动nomount阶段就会报错,这里不展开。
直接演示下vi如何列编辑改回去的全过程吧,首先vi这个文件进入,使用:set nu
显示行号方便之后操作:
1 *.audit_file_dest='/opt/app/oracle/admin/prod/adump'
2 *.audit_trail='db'
3 *.cluster_database=true
4 *.compatible='11.2.0.4.0'
5 *.control_files=' DATA/prod/controlfile/current.265.1083233741'
6 *.db_block_size=8192
7 *.db_create_file_dest=' DATA'
8 *.db_domain=''
9 *.db_file_name_convert=' data/prod',' data/mynas'
10 *.db_name='prod'
11 *.db_unique_name='mynas'
12 *.diagnostic_dest='/opt/app/oracle'
13 *.dispatchers='(PROTOCOL=TCP) (SERVICE=prodXDB)'
14 *.enable_goldengate_replication=TRUE
15 *.fal_server='prod'
16 prod1.instance_number=1
17 prod2.instance_number=2
18 *.log_archive_config='DG_CONFIG=(prod,mynas)'
19 *.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=mynas'
20 *.log_archive_dest_2='SERVICE=prod VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prod'
21 *.log_archive_dest_state_1='ENABLE'
22 *.log_archive_dest_state_2='ENABLE'
23 *.log_file_name_convert=' data/prod',' data/mynas',' fra/prod',' fra/mynas'
24 *.open_cursors=300
25 *.pga_aggregate_target=1290797056
26 *.processes=150
27 *.remote_listener='jyrac-scan:1521'
28 *.remote_login_passwordfile='exclusive'
29 *.sga_target=2008023040
30 *.standby_file_management='AUTO'
31 prod2.thread=2
32 prod1.thread=1
33 prod1.undo_tablespace='UNDOTBS1'
34 prod2.undo_tablespace='UNDOTBS2'
比如这里先改16、17两行,直接:16
到16行,然后ctrl v
进入列编辑(-- VISUAL BLOCK --)模式,向下箭头移动光标,选择需要修改的这两列,待光标在我们要修改的列上闪烁时,使用shift i
批量插入,这里需要特别注意的是,插入时好像只改1行?不要担心,只要前面操作ok,改完后直接ESC
键,修改就会同步到我们选择的所有行:
16 jyzhao1.instance_number=1
17 jyzhao2.instance_number=2
同样操作,对31~34行进行修改:
代码语言:javascript复制 31 jyzhao2.thread=2
32 jyzhao1.thread=1
33 jyzhao1.undo_tablespace='UNDOTBS1'
34 jyzhao2.undo_tablespace='UNDOTBS2'
是不是很简单? 好了,现在可以自己练习再改回去吧_