歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> VIM-神器打造實例

VIM-神器打造實例

日期:2017/2/28 16:08:16   编辑:Linux教程

微軟內部最受歡迎的編輯器是什麼麼?還在用Ctrl+f勾選"正則表達式"進行review替換麼? 你真的out了 還在用代碼提示來安慰自己的麼?你的智商真的下降得不行了。。 什麼是程序員最後的武器 vc6?vim?emacs?editplus?eclipse?

笑而不語 沒有最好 只有最強

VIM基本命令

  1. VI常用實用命令學習
  2. 目標:[通過此練習學習通夠利用VI編輯器,對系統配置文件進行修改或編寫簡單的腳本程序]
  3. 命令行或命令模式:在最後一行沒有顯示--INSERT--或--REPLACE--字樣的時候。
  4. #: 是指常用的命令
  5. 一般模式:光標移動
  6. h 或 -> 光標向左移動一個字符
  7. ------------------------------------------------------------
  8. l 或 <- 光標向右移動一個字符
  9. ------------------------------------------------------------
  10. k 或 向上方向鍵 光標向上移動一個字符
  11. ------------------------------------------------------------
  12. j 或 向下方向鍵 光標向下移動一個字符
  13. ------------------------------------------------------------
  14. Ctrl+f # 屏幕向前翻動一頁
  15. --------------------------------------------------------
  16. Ctrl+b # 屏幕向後翻動一頁
  17. --------------------------------------------------------
  18. Ctrl+d 屏幕向前翻動半頁
  19. --------------------------------------------------------
  20. Ctrl+u 屏幕向後翻動半頁
  21. --------------------------------------------------------
  22. + 光標移動到非空格符的下一列
  23. ------------------------------------------------------------------
  24. - 光標移動到非空格符的上一列
  25. -------------------------------------------------------------------
  26. n 按下數字鍵後再按空格鍵,光標會向右移動這一行的n個字符。
  27. (例如20,則光標會向右移動20個字符)
  28. ----------------------------------------------------------------------------------------------
  29. 0 # (這是數字0)移動到這一行的第一個字符處
  30. -----------------------------------------------------------------------------
  31. $ # 移動到這一行的最後一個字符處
  32. --------------------------------------------------------------------
  33. H 光標移動到這個屏幕最上方的那一行
  34. ------------------------------------------------------------------------
  35. M 光標移動到這個屏幕中央的那一行
  36. ----------------------------------------------------------------------
  37. L 光標移動到這個屏幕最下方的那一行
  38. ------------------------------------------------------------------------
  39. G # 移動到這個文件的最後一行
  40. ----------------------------------------------------------------
  41. nG 移動到這個文件的第n行。
  42. 例如20G,則會移動到這個文件的第20行(可配合:set nu)
  43. ----------------------------------------------------------------------------------------------
  44. n # 光標向下移動n行
  45. -------------------------------------------------------
  46. 一般模式:查找與替換
  47. /word # 在光標之後查找一個名為word的字符串
  48. --------------------------------------------------------------------------
  49. ?word 在光標之前查找一個名為word的字符串
  50. --------------------------------------------------------------------------
  51. :n1,n2s/word1/word2/g # 在第n1與n2行之間查找word1這個字符串,並將該字符串替換為word2
  52. ----------------------------------------------------------------------------------------------------
  53. :1,$s/word1/word2/g # 從第一行到最後一行查找word1字符串,並將該字符串替換為word2
  54. --------------------------------------------------------------------------------------------------
  55. :1,$s/word1/word2/gc # 從第一行到最後一行查找word1字符串,並將該字符串替換為word2,
  56. 且在替換前顯示提示符讓用戶確認(confirm)
  57. ---------------------------------------------------------------------------------------------------
  58. 一般模式:刪除、復制與粘貼
  59. x,X # x為向後刪除一個字符,X為向前刪除一個字符
  60. --------------------------------------------------------------------------------
  61. nx 向後刪除n個字符
  62. -------------------------------------------------------
  63. dd # 刪除光標所在的那一整行
  64. --------------------------------------------------------------
  65. ndd # 刪除光標所在列的向下n列,例如,20dd則是刪除20
  66. ---------------------------------------------------------------------------------------
  67. d1G 刪除光標所在行到第一行的所有數據
  68. ------------------------------------------------------------------------
  69. dG 刪除光標所在行到最後一行的所有數據
  70. --------------------------------------------------------------------------
  71. yy # 復制光標所在行
  72. ------------------------------------------------------
  73. nyy # 復制光標所在列的向下n列,例如,20yy則是復制20
  74. ---------------------------------------------------------------------------------------
  75. y1G 復制光標所在列到第一列的所有數據
  76. ------------------------------------------------------------------------
  77. yG 復制光標所在列到最後一列的所有數據
  78. --------------------------------------------------------------------------
  79. p,P # p為復制的數據粘貼在光標下一行,P為粘貼在光標上一行
  80. ------------------------------------------------------------------------------------------
  81. J 將光標所在列與下一列的數據結合成一行
  82. -----------------------------------------------------------------------------
  83. u # 恢復前一個動作
  84. ------------------------------------------------------
  85. 編輯模式:
  86. i,I # 插入:在當前光標所在處插入輸入的文字,已存在的字符會向後退
  87. --------------------------------------------------------------------------------------------------
  88. a,A # 添加:由當前光標所在處的下一個字符開始輸入,已存在的字符會向後退
  89. -------------------------------------------------------------------------------------------------------
  90. o,O # 插入新的一行:從光標所在處的下一行行首開始輸入字符
  91. ------------------------------------------------------------------------------------------
  92. r,R # 替換:r會替換光標所指的那一個字符;R會一直替換光標所指的文字,直到按下Esc為止
  93. ---------------------------------------------------------------------------------------------------------------------
  94. Esc # 退出編輯模式,回到一般模式
  95. ------------------------------------------------------------------
  96. 命令行模式:
  97. :w # 將編輯的數據寫入硬盤文件中
  98. ------------------------------------------------------------------
  99. :w! 若文件屬性為只讀,強制寫入該文件
  100. ------------------------------------------------------------------------
  101. :q # 退出vi
  102. ----------------------------------------------
  103. q! 若曾修改過文件,又不想保存,使用!為強制退出不保存文件
  104. ---------------------------------------------------------------------------------------------
  105. :wq # 保存後退出,若為:wq!,則為強制保存後退出
  106. ---------------------------------------------------------------------------------
  107. :w[filename] 將編輯數據保存為另一個文件(類似另存為新文檔):x也是保存
  108. ------------------------------------------------------------------------------------
  109. :r[filename] 在編輯的數據中,讀入另一個文件的數據,亦即將filename這個文件內容加到光標所在行的後面
  110. ----------------------------------------------------------------------------------------------------------------------------
  111. :set nu 顯示行號,設定之後,會在每一行的前面顯示該行的行號
  112. ------------------------------------------------------------------------------------------
  113. :set nonu 與set nu相反,為取消行號
  114. ----------------------------------------------------------------
  115. n1,n2w[filename] 將n1到n2的內容保存為filename這個文件
  116. ----------------------------------------------------------------------------
  117. 練習:
  118. 1.請在/root目錄下建立一個名為supxmen的目錄;
  119. 2.進入supxmen目錄中;
  120. 3.將/etc/man.config復制到本目錄下;
  121. 4.使用vi開啟本目錄下的man.config文件;
  122. 5.在vi中設定行號.
  123. 6.移動到第63行,向右移動29個字符,請問您在雙引號中看到的是什麼目錄?
  124. 7.移到第一行,並且向下搜尋teTeX字符串,請問它在第幾行?
  125. 8.接下來,將50100行之間的man改為MAN,要求是逐個查找修改,請問如何輸入指令?
  126. 9.修改完後,突然反悔,要全部復原,有哪些方法?
  127. 10.復制5160行這10行的內容,並且粘貼到最後一行之後;
  128. 11.刪除1130行之間的20行內容;
  129. 12.將這個文件另存為文件名為man.supxmen.config的文件;
  130. 13.轉到第29行,並且刪除15個字符;
  131. 14.請問目前的文件有多少行,多少字符?
  132. 15.保存後退出.
  133. 答案是:134 3846

Mysql一分鐘 掌握 只需要 1分鐘 超過一分鐘 對不起 你更適合用mssql 傻瓜配置管理器!

  1. 格式:mysql -h 遠程主機地址 -u 用戶名 -p 回車
  2. 輸入密碼進入:
  3. mysql -u root -p 回車
  4. Enter password: ,輸入密碼就可以進入
  5. mysql> 進入了
  6. 退出命令:>exit 或者ctrl+D
  7. 二,MySQL管理與授權
  8. 1.修改密碼:
  9. 格式:mysqladmin -u 用戶名 -p 舊密碼 password 新密碼
  10. 2.增加新用戶:
  11. >grant create,select,update....(授予相關的操作權限)
  12. ->on 數據庫.*
  13. -> to 用戶名@登錄主機 identified by '密碼'
  14. 操作實例:
  15. 給root用戶添加密碼:
  16. # mysqladmin -u root password linuxidc
  17. 因為開始root沒有密碼,所以-p舊密碼一項可以省略.
  18. 登陸測試:
  19. # mysql -u root -p 回車
  20. 輸入密碼,成功登陸.
  21. 將原有的mysql管理登陸密碼linuxidc改為linuxidc.net.
  22. # mysqladmin -u root -p linuxidc password 'linuxidc.net'
  23. 創建數據庫添加用戶並授予相應的權限:
  24. mysql> create database phpbb;
  25. Query OK, 1 row affected (0.02 sec)
  26. mysql> use phpbb;
  27. Database changed
  28. mysql> grant create,select,update,insert,delete,alter
  29. -> on phpbb.*
  30. -> to phpbbroot@localhost identified by 'linuxidc';
  31. Query OK, 0 rows affected (0.00 sec)
  32. 授予所有的權限:
  33. >grant all privileges
  34. >on bbs.*
  35. >to bbsroot@localhost identified by 'linuxidc'
  36. 回收權限:
  37. revoke create,select,update,insert,delete,alter
  38. on phpbb.*
  39. from phpbbroot@localhost identified by 'linuxidc';
  40. 完全將phpbbroot這個用戶刪除:
  41. >use mysql
  42. >delete from user
  43. where user='phpbbroot' and host='localhost';
  44. >flush privileges; 刷新數據庫
  45. 三,數據庫簡單操作
  46. 1.顯示數據庫列表:
  47. >show databases;
  48. mysql
  49. test
  50. 2.使其成為當前操作數據庫
  51. >use mysql; 打開數據庫.
  52. >show tables; 顯示mysql數據庫中的數據表.
  53. 3.顯示數據表的表結構:
  54. >describe 表名;
  55. >describe user; 顯示user表的表結構:
  56. 4.創建數據庫,建表
  57. >create database 數據庫名;
  58. >use 數據庫名;
  59. >create table 表名(字段設定列表)
  60. 5.刪除數據庫,冊除表
  61. >drop database ���據庫名;
  62. >drop table 表名;
  63. 6.顯示表中的記錄;
  64. select * from 表名;
  65. 7.修改數據庫結構:
  66. 增加字段:
  67. alter table dbname add column <字段名><字段選項>
  68. 修改字段:
  69. alter table dbname change <舊字段名> <新字段名><選項>
  70. 刪除字段:
  71. alter table dbname drop column <字段名>
  72. 實例操作:
  73. >create database office;
  74. >use office;
  75. mysql> create table personal(
  76. -> member_no char(5) not null,
  77. -> name char(,
  78. -> birthday date,
  79. -> exam_score tinyint,
  80. -> primary key(member_no)
  81. -> );
  82. Query OK, 0 rows affected (0.01 sec)
  83. >desc personal; 顯示表結構:
  84. +------------+------------+------+-----+---------+-------+
  85. | Field | Type | Null | Key | Default | Extra |
  86. +------------+------------+------+-----+---------+-------+
  87. | member_no | char(5) | | PRI | | |
  88. | name | char( | YES | | NULL | |
  89. | birthday | date | YES | | NULL | |
  90. | exam_score | tinyint(4) | YES | | NULL | |
  91. +------------+------------+------+-----+---------+-------+
  92. 4 rows in set (0.00 sec)
  93. insert into personal values ('001','netseek','1983-03-15','95');
  94. insert into personal values ('002','heihei','1982-02-24','90');
  95. insert into personal values ('003','gogo','1985-05-21','85');
  96. insert into personal values ('004','haha','1984-02-25','84');
  97. insert into personal values ('005','linlin','1982-04-28','85');
  98. insert into personal values ('006','xinxin','1985-03-15','75');
  99. mysql> select * from personal;
  100. +-----------+---------+------------+------------+
  101. | member_no | name | birthday | exam_score |
  102. +-----------+---------+------------+------------+
  103. | 001 | netseek | 1983-03-15 | 95 |
  104. | 002 | heihei | 1982-02-24 | 90 |
  105. | 003 | gogo | 1985-05-21 | 85 |
  106. | 004 | haha | 1984-02-25 | 84 |
  107. | 005 | linlin | 1982-04-28 | 85 |
  108. | 006 | xinxin | 1985-03-15 | 75 |
  109. +-----------+---------+------------+------------+
  110. 修改數據庫表:
  111. 要求: 在birthday這後增加一個為height的字段,數據類型為tinyint.
  112. 將字段exam_score 改名為scores,數據類型不變
  113. >alter table personal
  114. ->add column height tinyint after birthday,
  115. ->change column exam_score scores tinyint;
  116. mysql> select * from personal;
  117. +-----------+---------+------------+--------+--------+
  118. | member_no | name | birthday | height | scores |
  119. +-----------+---------+------------+--------+--------+
  120. | 001 | netseek | 1983-03-15 | NULL | 95 |
  121. | 002 | heihei | 1982-02-24 | NULL | 90 |
  122. | 003 | gogo | 1985-05-21 | NULL | 85 |
  123. | 004 | haha | 1984-02-25 | NULL | 84 |
  124. | 005 | linlin | 1982-04-28 | NULL | 85 |
  125. | 006 | xinxin | 1985-03-15 | NULL | 75 |
  126. +-----------+---------+------------+--------+--------+
  127. 給表中插入數據:
  128. >update personal set scores=95+5 where name='netseek';
  129. >select scores from personal where name='netseek';
  130. +--------+
  131. | scores |
  132. +--------+
  133. | 100 |
  134. +--------+
  135. 刪除表名字為'gogo'所有的信息中的的:
  136. > delete from personal where name='gogo';
  137. 冊除數據庫中的表:
  138. mysql>drop table if exists personal;
  139. 三,數據庫的導入與導出
  140. 導出:
  141. 使用select into outfile 'filename'語句
  142. 使用mysqldump實用程序
  143. 使用select into outfile 'filename'語句
  144. 1.只能處理單個表,輸出文件只有數據,沒有表結構
  145. 我們要將office,其中有一個表為personal,現在要把personal卸成文本文件out.txt:
  146. >use office;
  147. >select * from personal into outfile 'out.txt'; 可以看在/var/lib/mysql/office/目錄下有out.txt
  148. select * from personal into outfile './out.txt'; 可以看在out.txt 在/var/lib/mysql/目錄下用out.txt
  149. 2.使用mysqldump實用程序(可以輕松處理多個表)
  150. # cd /var/lib/mysql
  151. 導出建立相關表的建表命令和插入指令
  152. # mysqldump bbs >bbs.sql 將數據庫bbs導入到bbs.sql中
  153. 如果要將bbs.sql導入數據庫可以使用:
  154. mysql> create database bbstest; 先建立一個名為office 的數據庫.
  155. # mysql bbstest <bbs.sql (這個常用在將本地的數據庫文件傳到服務器上,再導入到數據庫中)
  156. 只想導出建表指令:
  157. # mysqldump -d bbs >bbscreate.sql
  158. 只想導出插入數據的sql指令:
  159. # mysqldump -t bbs >bbsinsert.sql
  160. 同時導出數據庫中建表指令和表中的數據:
  161. # mysqldump -T./ bbs cdb_admingroups (其中./表示當前目錄,cdb_admingroups為bbs數據庫其中的一個表)
  162. #ls
  163. cdb_admingroups.sql 導出了建表指令
  164. cdb_admingroups.txt 導出了表中的數據
  165. 導入:
  166. 從文件中加載數據庫:
  167. mysql>load data infile "/tmp/name.txt" into table names;
  168. mysql>select * from names;
  169. 四,數據庫備份
  170. 1.手動拷貝備份:
  171. MySQL數據庫的文件保存在目錄/var/lib/mysql中,數據庫為每個庫建立一個目錄,所有的數據庫文件都在這些目錄中.
  172. [root@www.linuxidc.com mysql]#ls
  173. bbs mysql mysql.sock phpbb test office 顯示其中的數據庫.
  174. 如果我們要將現在的數據庫目錄備份為mysql.bak .
  175. [root@www.linuxidc.com lib]# cp -rf mysql mysql.bak
  176. 如果數據庫遭到了破壞,現在要將數據庫恢復:
  177. [root@www.linuxidc.com lib]# cp -rf mysql.bak/* mysql
  178. 恢復數據庫以後,var/lib/mysql中的文件已改變了,要更改文件的所屬權限必須改變MySQL數據庫的用戶讀寫權限。
  179. 所以我們得啟動和運行mysql,並登陸數據庫:
  180. [root@www.linuxidc.com lib]# /etc/init.d/mysqld start
  181. [root@www.linuxidc.com lib]# mysql -u root -p
  182. Enter password:輸入密碼成功登陸.
  183. mysql> show databses;
  184. 2.利用mysqldump來備份數據庫
  185. [root@www.linuxidc.com mysql]# mysqldump --opt bbs -u root -p > bbs.sql
  186. Enter password:
  187. 注:--opt添加備份的其它選項,bb為其中一個數據庫名,
  188. 上面的意思是:使用重定向輸出將備份寫入到文件bb.sql中.
  189. [root@www.linuxidc.com mysql] #less bbs.sql
  190. 如果要恢復bb這個數據庫,則進行如下操作:
  191. [root@www.linuxidc.com mysql] #mysql bbs -u root -p < bbs.sql
  192. 如果要備份所有數據庫:
  193. [root@www.linuxidc.com mysql] #mysqldump --opt --all-databases -u root -p >mysql.bak
  194. Enetr password:輸入密碼即可
  195. 恢復所有數據庫,不用輸入數據庫的名字:
  196. [root@www.linuxidc.com mysql] #mysql -u root -p < mysql.bak
  197. Enetr password: 輸入密碼即可
  198. 五,附:MySQL密碼忘記了怎麼辦?
  199. 如果 MySQL 正在運行,首先殺之: killall -TERM mysqld。
  200. 啟動 MySQL :bin/safe_mysqld --skip-grant-tables &
  201. 就可以不需要密碼就進入 MySQL 了。
  202. 然後就是
  203. >use mysql
  204. >update user set password=password("new_pass") where user="root";
  205. >flush privileges;
  206. 重新殺 MySQL ,用正常方法啟動 MySQL 。
Copyright © Linux教程網 All Rights Reserved