{"id":2503,"date":"2018-11-05T19:00:12","date_gmt":"2018-11-05T10:00:12","guid":{"rendered":"http:\/\/appsweets.net\/blog\/?p=2503"},"modified":"2018-11-05T19:00:12","modified_gmt":"2018-11-05T10:00:12","slug":"kenya-television-network-2","status":"publish","type":"post","link":"https:\/\/appsweets.net\/blog\/2018\/11\/05\/kenya-television-network-2\/","title":{"rendered":"Kenya Television Network #2"},"content":{"rendered":"<div class=\"db9cc8cdb64025d13c1cc9dad0a0e262\" data-index=\"1\" style=\"float: left; margin: 16px 16px 16px 0;\">\n<script type=\"text\/javascript\"><!--\r\ngoogle_ad_client = \"ca-pub-5825700137064158\";\r\n\/* 250sq, appsweets-blog *\/\r\ngoogle_ad_slot = \"4837931762\";\r\ngoogle_ad_width = 250;\r\ngoogle_ad_height = 250;\r\n\/\/-->\r\n<\/script>\r\n<script type=\"text\/javascript\"\r\nsrc=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\r\n<\/script>\n<\/div>\n<p>\u3088\u304f\u8abf\u3079\u3066\u307f\u305f\u3089\u3001Chrome\u306b\u6b8b\u3063\u3066\u3057\u307e\u3046Emacs\u307d\u3044\u30ad\u30fc\u30d0\u30a4\u30f3\u30c9\u306fcVim\u306e<a href=\"chrome-extension:\/\/ihlenndgcmojhcghmfjfneahoeklbjjh\/pages\/mappings.html\" target=\"_blank\">\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u4f5c<\/a>\u3060\u3063\u305f\u3002\u306a\u30fc\u3093\u3060\u3001\u305d\u308a\u3083\u78ba\u304b\u306b\u81ea\u5206\u3067\u5b9a\u7fa9\u3057\u305f\u899a\u3048\u304c\u306a\u3044\u308f\u3051\u3060\u3002\u8a18\u61b6\u529b\u30e4\u30d0\u304f\u306a\u304b\u3063\u305f\u3002<\/p>\n<p>\u3057\u304b\u3057\u305d\u3046\u3059\u308b\u3068\u3001\u30c6\u30ad\u30b9\u30c8\u5165\u529b\u7cfb\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u3078\u306e\u8ffd\u52a0\u306e\u30ad\u30fc\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u304c\u8907\u6570\u306e\u7b87\u6240\u306b\u307e\u305f\u304c\u3063\u3066\u308b\u306e\u304c\u306a\u3093\u3060\u304b\u5c45\u5fc3\u5730\u304c\u60aa\u3044\u3002gtk \u306e\u30ec\u30d9\u30eb\u3067\u5b9a\u7fa9\u3057\u305f\u307b\u3046\u304c\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u4f7f\u3048\u308b\u3057\u3001\u305d\u3063\u3061\u306b\u7d71\u4e00\u3057\u3088\u3046\u304b\u306a\u3002<\/p>\n<p>cVim \u304c\u5b9a\u7fa9\u3059\u308b\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002<\/p>\n<table>\n<tr>\n<td>&lt;C-i&gt;<\/td>\n<td>move cursor to the beginning of the line<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-e&gt;<\/td>\n<td>move cursor to the end of the line<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-u&gt;<\/td>\n<td>delete to the beginning of the line<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-o&gt;<\/td>\n<td>delete to the end of the line<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-y&gt;<\/td>\n<td>delete back one word<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-p&gt;<\/td>\n<td>delete forward one word<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-h&gt;<\/td>\n<td>move cursor back one word<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-l&gt;<\/td>\n<td>move cursor forward one word<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-f&gt;<\/td>\n<td>move cursor forward one letter<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-b&gt;<\/td>\n<td>move cursor back one letter<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-j&gt;<\/td>\n<td>move cursor forward one line<\/td>\n<\/tr>\n<tr>\n<td>&lt;C-k&gt;<\/td>\n<td>move cursor back one line<\/td>\n<\/tr>\n<\/table>\n<p>\u3053\u306e\u5185\u591a\u7528\u3057\u3066\u3044\u308b\u306e\u306f &lt;C-i&gt;\u3001&lt;C-e&gt;\u3001&lt;C-u&gt;\u3001&lt;C-f&gt;\u3001&lt;C-b&gt;\u3001&lt;C-j&gt;\u3001&lt;C-k&gt; \u304f\u3089\u3044\u3002\u3053\u308c\u3089\u3092 gtk \u306e\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u306b\u79fb\u690d\u3059\u308c\u3070\u3044\u3044\u3002\u305d\u3057\u3066\u3001cvimrc \u5074\u3067\u306f [cci]iunmapAll[\/cci] \u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u5165\u529b\u7cfb\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u3078\u306e\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u3059\u3079\u3066\u524a\u9664\u3059\u308b\u3002<\/p>\n<p>\u3055\u3066\u6b21\u306b gtk \u5074\u3067\u3001\u81ea\u524d\u306e\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u5b9a\u7fa9\u3059\u308b\u3002<br \/>\n<code><br \/>\n$ cd ~<br \/>\n$ mkdir .themes<br \/>\n$ cd .themes<br \/>\n$ cp -r \/usr\/share\/themes\/Emacs .<br \/>\n$ mv Emacs MyBindings<br \/>\n<\/code><br \/>\n\u3066\u306a\u611f\u3058\u3067\u30db\u30fc\u30e0\u306b Emacs \u306e\u5b9a\u7fa9\u3092\u30b3\u30d4\u30fc\u3057\u3001\u5fc5\u8981\u306a\u7b87\u6240\u3092\u3044\u3058\u308b\u3002\u3068\u3053\u308d\u3067 gtk \u3068\u8a00\u3063\u3066\u3082 2.0 \u7cfb\u3068 3.0 \u7cfb\u304c\u3042\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u3069\u3061\u3089\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\u304b\u306f\u508d\u76ee\u306b\u306f\u3088\u304f\u5206\u304b\u3089\u306a\u3044\uff08\u65b0\u3057\u3081\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u307e\u3042 3.0 \u7cfb\u3068\u8003\u3048\u3066\u3044\u3044\u3093\u3060\u308d\u3046\u3051\u3069\uff09\u3002Chrome \u306e\u5834\u5408\u306f<\/p>\n<ul>\n<li>\/usr\/bin\/google-chrome (\/etc\/alternatives\/google-chrome \u3078\u306e\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af)<\/li>\n<li>\u2192 \/etc\/alternatives\/google-chrome (\/usr\/bin\/google-chrome-stable \u3078\u306e\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af)<\/li>\n<li>\u2192 \/usr\/bin\/google-chrome-stable (\/opt\/google\/chrome\/google-chrome \u3078\u306e\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af)<\/li>\n<li>\u2192 \/opt\/google\/chrome\/google-chrome (\u30b7\u30a7\u30eb\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3042\u308a\u3001\/opt\/google\/chrome\/chrome \u3092 exec \u3059\u308b)<\/li>\n<\/ul>\n<p>\u3064\u307e\u308a\u6700\u7d42\u7684\u306b\u5b9f\u884c\u3055\u308c\u308b\u5b9f\u884c\u5f62\u5f0f\u306f \/opt\/google\/chrome\/chrome \u306a\u306e\u3067\u3001\u3053\u308c\u3092 ldd \u306b\u304b\u3051\u308b:<br \/>\n<code><br \/>\n$ ldd \/opt\/google\/chrome\/chrome | grep gtk<br \/>\n\tlibgtk-3.so.0 => \/usr\/lib\/x86_64-linux-gnu\/libgtk-3.so.0 (0x00007f99fa5cc000)<br \/>\n<\/code><br \/>\nchrome \u306f gtk-3.0 \u306e\u65b9\u306e\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u53c2\u7167\u3059\u308b\u3053\u3068\u304c\u78ba\u8a8d\u3067\u304d\u305f\u3002\u3068\u3044\u3046\u3053\u3068\u3067\u307e\u305a\u306f MyBindings\/gtk-3.0\/gtk-keys.css \u3092\u3044\u3058\u308d\u3046\u3002\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4f8b\u3048\u3070<br \/>\n<code><br \/>\n@binding-set gtk-emacs-text-entry<br \/>\n{<br \/>\n  bind \"<ctrl>b\" { \"move-cursor\" (logical-positions, -1, 0) };<br \/>\n  bind \"<shift><ctrl>b\" { \"move-cursor\" (logical-positions, -1, 1) };<br \/>\n  bind \"<ctrl>f\" { \"move-cursor\" (logical-positions, 1, 0) };<br \/>\n  bind \"<shift><ctrl>f\" { \"move-cursor\" (logical-positions, 1, 1) };<\/p>\n<p>  bind \"<alt>b\" { \"move-cursor\" (words, -1, 0) };<br \/>\n  bind \"<shift><alt>b\" { \"move-cursor\" (words, -1, 1) };<br \/>\n  bind \"<alt>f\" { \"move-cursor\" (words, 1, 0) };<br \/>\n  bind \"<shift><alt>f\" { \"move-cursor\" (words, 1, 1) };<\/p>\n<p>  bind \"<ctrl>a\" { \"move-cursor\" (paragraph-ends, -1, 0) };<br \/>\n  bind \"<shift><ctrl>a\" { \"move-cursor\" (paragraph-ends, -1, 1) };<br \/>\n  bind \"<ctrl>e\" { \"move-cursor\" (paragraph-ends, 1, 0) };<br \/>\n  bind \"<shift><ctrl>e\" { \"move-cursor\" (paragraph-ends, 1, 1) };<\/p>\n<p>  bind \"<ctrl>w\" { \"cut-clipboard\" () };<br \/>\n  bind \"<ctrl>y\" { \"paste-clipboard\" () };<\/p>\n<p>  bind \"<ctrl>d\" { \"delete-from-cursor\" (chars, 1) };<br \/>\n  bind \"<alt>d\" { \"delete-from-cursor\" (word-ends, 1) };<br \/>\n  bind \"<ctrl>k\" { \"delete-from-cursor\" (paragraph-ends, 1) };<br \/>\n  bind \"<alt>backslash\" { \"delete-from-cursor\" (whitespace, 1) };<\/p>\n<p>  bind \"<alt>space\" { \"delete-from-cursor\" (whitespace, 1)<br \/>\n                      \"insert-at-cursor\" (\" \") };<br \/>\n  bind \"<alt>KP_Space\" { \"delete-from-cursor\" (whitespace, 1)<br \/>\n                         \"insert-at-cursor\" (\" \")  };<br \/>\n  \/*<br \/>\n   * Some non-Emacs keybindings people are attached to<br \/>\n   *\/<br \/>\n  bind \"<ctrl>u\" { \"move-cursor\" (paragraph-ends, -1, 0)<br \/>\n                   \"delete-from-cursor\" (paragraph-ends, 1) };<\/p>\n<p>  bind \"<ctrl>h\" { \"delete-from-cursor\" (chars, -1) };<br \/>\n  bind \"<ctrl>w\" { \"delete-from-cursor\" (word-ends, -1) };<br \/>\n}<\/p>\n<p>entry {<br \/>\n  -gtk-key-bindings: gtk-emacs-text-entry;<br \/>\n}<br \/>\n<\/code><\/p>\n<p>\u3068\u3044\u3046\u611f\u3058\u306b\u306a\u3063\u3066\u3044\u3066\u3001@binding-set \u3067\u69d8\u3005\u306a\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u5b9a\u7fa9\u3057\u3001entry { -gtk-key-bindings: [name] } \u3067\u5272\u308a\u5f53\u3066\u308b\u3002binding-set \u306b\u4e0e\u3048\u308b\u540d\u524d\u306f\u305d\u306e\u30b9\u30b3\u30fc\u30d7\u304c\u3088\u304f\u308f\u304b\u3089\u306a\u3044\u304c\u3001\u307e\u3042\u30e6\u30cb\u30fc\u30af\u306a\u3082\u306e\u306b\u3057\u3066\u304a\u3044\u305f\u307b\u3046\u304c\u3044\u3044\u3093\u3058\u3083\u306a\u3044\u304b\u306a\uff1f\u3000\u4e00\u65b9 entry (GtkEntry) \u306f 1\u884c\u5165\u529b\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306e\u3053\u3068\u3001textview (GtkTextView) \u306f\u8907\u6570\u5165\u529b\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306e\u3053\u3068\u3060\u3002\u305d\u308c\u305e\u308c\u306b\u5bfe\u3057\u3066\u547c\u3073\u51fa\u305b\u308b move-cursor \u3084 delete-from-cursor \u306a\u3069\u306e\u5b9a\u7fa9\u306f\u4ee5\u4e0b\u3092\u53c2\u7167:<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.gnome.org\/gtk3\/stable\/GtkEntry.html#GtkEntry-activate\" target=\"_blank\">GtkEntry<\/a><\/li>\n<li><a href=\"https:\/\/developer.gnome.org\/gtk3\/stable\/GtkTextView.html#GtkTextView-backspace\" target=\"_blank\">GtkTextView<\/a><\/li>\n<\/ul>\n<p>\u3055\u3066 cVim \u306e\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3092\u6301\u3063\u3066\u304f\u308b\u969b\u3001\u3044\u304f\u3064\u304b\u885d\u7a81\u3059\u308b\u7b87\u6240\u304c\u3042\u308b\u3002<\/p>\n<ul>\n<li>cVim \u3067\u306e ^U \u306f\u30ab\u30fc\u30bd\u30eb\u304b\u3089\u524d\u65b9\u3078\u3001\u884c\u982d\u307e\u3067\u3092\u524a\u9664\u3059\u308b\u3002gtk \u3067\u306f\u30ab\u30fc\u30bd\u30eb\u884c\u304c\u4f4d\u7f6e\u3059\u308b\u7269\u7406\u884c\u5168\u4f53\u3092\u524a\u9664\u3059\u308b\u3002\u3069\u3061\u3089\u3092\u63a1\u308b\u3079\u304d\u304b\uff1f<\/li>\n<li>cVim \u3067\u306f\u30ab\u30fc\u30bd\u30eb\u3092\u884c\u982d\u3078\u79fb\u52d5\u3059\u308b\u306e\u306f ^I \u3060\u304c\u3001gtk \u3067\u306f Emacs \u306b\u305d\u306e\u307e\u307e\u5023\u3063\u3066 ^A \u3067\u3042\u308b\u3002\u304a\u305d\u3089\u304f cVim \u306f ^A = \u5168\u9078\u629e\u3068\u3044\u3046\u30b8\u30a7\u30cd\u30ea\u30c3\u30af\u306a UI \u306b\u59a5\u5354\u3057\u3066 ^I \u306b\u79fb\u52d5\u3055\u305b\u305f\u3093\u3060\u3068\u601d\u3046\u3002\u3069\u3061\u3089\u3092\u63a1\u308b\u3079\u304d\u304b\uff1f\u3000\u3061\u306a\u307f\u306b gtk \u306e Emacs \u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3067\u306f\u5168\u9078\u629e\u306f ^\/ \u3067\u884c\u3048\u308b<\/a>\n<\/ul>\n<p>\u305d\u3093\u306a\u3053\u3093\u306a\u3092\u30a2\u30ec\u30b3\u30ec\u3057\u305f\u3089\u3001\u540c\u3058\u3088\u3046\u306a\u5909\u66f4\u3092 gtk-2.0\/gtkrc \u306b\u3082\u65bd\u3057\u305f\u3089\u8a2d\u5b9a\u30a8\u30c7\u30a3\u30bf\u306e Gtk -> keyThemeName \u306b\u65b0\u3057\u304f\u4f5c\u3063\u305f\u30c6\u30fc\u30de\u540d\u3092\u4e0e\u3048\u308b\u3002\u307e\u305f\u306f\u3001\u7aef\u672b\u304b\u3089<br \/>\n<code>$ xfconf-query -c xsettings -p \/Gtk\/KeyThemeName -s MyBindings<\/code><br \/>\n\u306a\u611f\u3058\u3002xfce \u3067\u306f\u306a\u3044\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u74b0\u5883\u306e\u5834\u5408\u306f<br \/>\n<code>$ gsettings set org.gnome.desktop.interface gtk-key-theme MyBindings<\/code><br \/>\n\u3067\u3044\u3044\u3068\u601d\u3046\u3051\u3069\u3088\u304f\u77e5\u3089\u306a\u3044\u3002<\/p>\n<div class=\"db9cc8cdb64025d13c1cc9dad0a0e262\" data-index=\"1\" style=\"float: left; margin: 16px 16px 16px 0;\">\n<script type=\"text\/javascript\"><!--\r\ngoogle_ad_client = \"ca-pub-5825700137064158\";\r\n\/* 250sq, appsweets-blog *\/\r\ngoogle_ad_slot = \"4837931762\";\r\ngoogle_ad_width = 250;\r\ngoogle_ad_height = 250;\r\n\/\/-->\r\n<\/script>\r\n<script type=\"text\/javascript\"\r\nsrc=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\r\n<\/script>\n<\/div>\n\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>\u3088\u304f\u8abf\u3079\u3066\u307f\u305f\u3089\u3001Chrome\u306b\u6b8b\u3063\u3066\u3057\u307e\u3046Emacs\u307d\u3044\u30ad\u30fc\u30d0\u30a4\u30f3\u30c9\u306fcVim\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u4f5c\u3060\u3063\u305f\u3002\u306a\u30fc\u3093\u3060\u3001\u305d\u308a\u3083\u78ba\u304b\u306b\u81ea\u5206\u3067\u5b9a\u7fa9\u3057\u305f\u899a\u3048\u304c\u306a\u3044\u308f\u3051\u3060\u3002\u8a18\u61b6\u529b\u30e4\u30d0\u304f\u306a\u304b\u3063\u305f\u3002 \u3057\u304b\u3057\u305d\u3046\u3059\u308b\u3068\u3001\u30c6\u30ad\u30b9\u30c8\u5165\u529b\u7cfb\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u3078\u306e\u8ffd\u52a0\u306e\u30ad\u30fc\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u304c\u8907\u6570\u306e\u7b87\u6240\u306b\u307e\u305f\u304c\u3063\u3066\u308b\u306e\u304c\u306a\u3093\u3060\u304b\u5c45\u5fc3\u5730\u304c\u60aa\u3044\u3002gtk \u306e\u30ec\u30d9\u30eb\u3067\u5b9a\u7fa9\u3057\u305f\u307b\u3046\u304c\u30b0\u30ed\u30fc\u30d0\u30eb\u306b\u4f7f\u3048\u308b\u3057\u3001\u305d\u3063\u3061\u306b\u7d71\u4e00\u3057\u3088\u3046\u304b\u306a\u3002 cVim \u304c\u5b9a\u7fa9\u3059\u308b\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002 &lt;C-i&gt; move cursor to the beginning of the line &lt;C-e&gt; move cursor to the end of the line &lt;C-u&gt; delete to the beginning of the line &lt;C-o&gt; delete to the end of the line &lt;C-y&gt; &hellip; <a href=\"https:\/\/appsweets.net\/blog\/2018\/11\/05\/kenya-television-network-2\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[40],"class_list":["post-2503","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/posts\/2503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/comments?post=2503"}],"version-history":[{"count":10,"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/posts\/2503\/revisions"}],"predecessor-version":[{"id":2513,"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/posts\/2503\/revisions\/2513"}],"wp:attachment":[{"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/media?parent=2503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/categories?post=2503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/appsweets.net\/blog\/wp-json\/wp\/v2\/tags?post=2503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}