次ã®ãããªè¡ã眮ããšïŒ
set LANG zh_CN.UTF-8
.config / fish /config.fishãž
ã³ãã³ããééã£ãŠãããšãæåãåé€ã§ããŸããã
äŸãã°ïŒ
ã³ãã³ããcatãã®ãeããåé€ããã
ãã ããæåãåé€ããããšã¯ã§ããŸãã
2.2.0æªæºã§åé¡ãããŸããã
éããŒãžã§ã³ïŒéãããŒãžã§ã³2.3.0
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒDragonFly testdf.com 4.4-RELEASE DragonFly v4.4.1.18.gc5db8-RELEASEïŒ0ïŒThu Jan 28 15:02:10 CST 2016 [email protected] ïŒ/ usr / obj / usr / src / sys / lhmwzy x86_64
ã¿ãŒããã«ãŸãã¯ã¿ãŒããã«ãšãã¥ã¬ãŒã¿ãŒïŒxterm
ã©ã®ããŒãæŒããŠããŸããïŒ ããã¯ã¹ããŒã¹ïŒ
ãããåœãŠã¯ãŸãå Žåã¯ã bind -k backspace
ãå®è¡ããŠèšå®å
容ã確èªããŠãããããšãã°script
ïŒãŸãã¯bashãæŒããŠctrl + vãæŒãïŒãå®è¡ããããŒãæŒããŠã©ã®ã·ãŒã±ã³ã¹ã確èªããŠãã ãããéä¿¡ããŸãã ïŒã¹ã¯ãªããã¯ããã©ã«ãã§ããã®ã»ãã·ã§ã³ã®åºåå
šäœãçŸåšã®ãã£ã¬ã¯ããªã®ãtypescriptããšåŒã°ãããã¡ã€ã«ã«å
¥ããŸãïŒã Xterm㯠"\ cH"ãéä¿¡ããå¿
èŠããããŸããããã¯ãéãïŒterminfoãä»ããŠãé©åã«èšå®ããå¿
èŠããã_ $ TERMãä»ããŠïŒããã¯ã¹ããŒã¹ãšããŠååŸããå¿
èŠããããŸãã
å°æ¥ã®éã®ããŒãžã§ã³ã§ã¯ããfish_key_readerããšåŒã°ããå°ããªãã«ããŒããã°ã©ã ã䜿çšããŠããããããããç°¡åã«ããäºå®ã§ãã
$ TERMã¯äœã«èšå®ãããŠããŸããïŒ ãxtermãïŒ
ããŒã¯Backspaceã§ãã
ç§ã«ã¡ãŒã«ãéã£ãŠãã ããããããŠç§ã¯ããªãã«ç§ã®ç®±ãžã®ã¢ã¯ã»ã¹ãäžããŸããããªãã«çç±ãèŠã€ããããŠãã ããã
ããŒã¯Backspaceã§ãã
ããŒã®ã©ãã«ã¯ãéä¿¡ããæåã®ã·ãŒã±ã³ã¹ã瀺ããŠããŸããã gitãªããžããªããååŸãããœãŒã¹ããéãã€ã³ã¹ããŒã«ã§ããŸããïŒ æ¬¡ã«make fish_key_reader
ç¶ããŠ./fish_key_reader
å Žåã¯ãããã¯ã¹ããŒã¹ããŒãæŒããŸãã xxd
ãŸãã¯od -tx1z
ãå®è¡ã§ããªãå Žåã¯ãããã¯ã¹ããŒã¹ããŒãæŒããŠãã[ctrl-D]ãæŒããŠãã ããã ãŸãã bind -k backspace
ãå®è¡ããŠããã®åºåã衚瀺ããŸãã echo $TERM
ãå®è¡ããŸãã
責任ã®çç±ãšäžåœèªãèªãŸãªãããã set LANG zh_CN.UTF-8
ããã®ã¯é£ãããããã·ã¹ãã ã«ãã°ã€ã³ããªãããšããå§ãããŸãã
./fish_key_reader
999999 usec decïŒ8 hexïŒ8 charïŒ\ bïŒå¥å\ cHïŒ
åèïŒãã€ã³ãããŒåãbackspaceãã®ã·ãŒã±ã³ã¹ãèŠã
bind -k backspace
bindïŒã㌠'backspace'ã®ãã€ã³ãã£ã³ã°ãèŠã€ãããŸãã
ãšã³ãŒ$ TERM
xterm
bindïŒã㌠'backspace'ã®ãã€ã³ãã£ã³ã°ãèŠã€ãããŸãã
ããŠãããã¯ããªãã®åé¡ã§ãã ããã¯æ¬¡ã®ãããªããšãèšãã¹ãã§ã
bind -k backspace backward-delete-char
ãããLANGå€æ°ã®èšå®ãšã©ã®ããã«é¢ä¿ããŠããã®ãããããŸããã ã©ãããããããããã©ã«ãã®ããŒãã€ã³ãã£ã³ã°ããªãŒããŒã©ã€ãããŸããã _ã / .config / fish / _ **ãã¡ã€ã«ã§ãããã€ã³ãããšããåèªã®èšåãæ€çŽ¢ããŸãã ãŸãããã©ã°ã€ã³ãããŒãžã£ãŒïŒäŸïŒfishermanãŸãã¯oh-my-fishïŒã䜿çšããŠããŸããããŸãã¯ãã®åé¡ã«é¢é£ããå¯èœæ§ã®ããä»ã®ãµãŒãããŒãã£ã¹ã¯ãªãããã€ã³ã¹ããŒã«ããŸãããïŒ
OKã
ã/ .config / fish /ã«ã¯3ã€ã®ãã¡ã€ã«ãããããŸãã
cat config.fish
set LANG zh_CN.UTF-8
cat fishd.lhmtestdf.com
# This file is automatically generated by the fish.
# Do NOT edit it directly, your changes will be overwritten.
SET __fish_init_1_50_0:\x1d
SET __fish_init_2_3_0:\x1d
SET fish_color_autosuggestion:555\x1eyellow
SET fish_color_command:005fd7\x1epurple
SET fish_color_comment:red
SET fish_color_cwd:green
SET fish_color_cwd_root:red
SET fish_color_end:green
SET fish_color_error:red\x1e\x2d\x2dbold
SET fish_color_escape:cyan
SET fish_color_history_current:cyan
SET fish_color_host:normal
SET fish_color_match:cyan
SET fish_color_normal:normal
SET fish_color_operator:cyan
SET fish_color_param:00afff\x1ecyan
SET fish_color_quote:brown
SET fish_color_redirection:normal
SET fish_color_search_match:\x2d\x2dbackground\x3dpurple
SET fish_color_selection:\x2d\x2dbackground\x3dpurple
SET fish_color_user:green
SET fish_color_valid_path:\x2d\x2dunderline
SET fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell\x0aType\x20\x1b\x5b32mhelp\x1b\x5b30m\x1b\x28B\x1b\x5bm\x20for\x20instructions\x20on\x20how\x20to\x20use\x20fish
SET fish_key_bindings:fish_default_key_bindings
SET fish_pager_color_completion:normal
SET fish_pager_color_description:555\x1eyellow
SET fish_pager_color_prefix:cyan
SET fish_pager_color_progress:cyan
éã®äž-2.2.0
ã³ãã³ãbindouputïŒ
bind
bind '' self-insert
bind \n execute
bind \ck kill-line
bind \cy yank
bind \t complete
bind \e\n commandline\ -i\ \\n
bind \e\[A up-or-search
bind \e\[B down-or-search
bind -k down down-or-search
bind -k up up-or-search
bind \e\[C forward-char
bind \e\[D backward-char
bind -k right forward-char
bind -k left backward-char
bind -k dc delete-char
bind -k backspace backward-delete-char
bind backward-delete-char
bind \e\[H beginning-of-line
bind \e\[F end-of-line
bind \e\[1\~ beginning-of-line
bind \e\[4\~ end-of-line
bind -k home beginning-of-line
bind -k end end-of-line
bind -k sdc backward-delete-char
bind \e\eOC nextd-or-forward-word
bind \e\eOD prevd-or-backward-word
bind \e\e\[C nextd-or-forward-word
bind \e\e\[D prevd-or-backward-word
bind \eO3C nextd-or-forward-word
bind \eO3D prevd-or-backward-word
bind \e\[3C nextd-or-forward-word
bind \e\[3D prevd-or-backward-word
bind \e\[1\;3C nextd-or-forward-word
bind \e\[1\;3D prevd-or-backward-word
bind \e\eOA history-token-search-backward
bind \e\eOB history-token-search-forward
bind \e\e\[A history-token-search-backward
bind \e\e\[B history-token-search-forward
bind \eO3A history-token-search-backward
bind \eO3B history-token-search-forward
bind \e\[3A history-token-search-backward
bind \e\[3B history-token-search-forward
bind \e\[1\;3A history-token-search-backward
bind \e\[1\;3B history-token-search-forward
bind \ca beginning-of-line
bind \ce end-of-line
bind \ey yank-pop
bind \cw backward-kill-path-component
bind \cp history-search-backward
bind \cn history-search-forward
bind \cf forward-char
bind \cb backward-char
bind \ct transpose-chars
bind \et transpose-words
bind \eu upcase-word
bind \ec capitalize-word
bind \ backward-kill-word
bind \eb backward-word
bind \ef forward-word
bind \e\[1\;5C forward-word
bind \e\[1\;5D backward-word
bind \e\[1\;9A history-token-search-backward
bind \e\[1\;9B history-token-search-forward
bind \e\[1\;9C forward-word
bind \e\[1\;9D backward-word
bind \e. history-token-search-backward
bind -k ppage beginning-of-history
bind -k npage end-of-history
bind \e\< beginning-of-buffer
bind \e\> end-of-buffer
bind \el __fish_list_current_token
bind \ew 'set tok (commandline -pt); if test $tok[1]; echo; whatis $tok[1]; commandline -f repaint; end'
bind \cl 'clear; commandline -f repaint'
bind \cc 'commandline ""'
bind \cu backward-kill-line
bind \ed kill-word
bind \cd delete-or-exit
bind -k f1 __fish_man_page
bind \eh __fish_man_page
bind \ep __fish_paginate
bind -k btab complete-and-search
bind \e cancel
bind \e\[I 'begin;end'
bind \e\[O 'begin;end'
ããããfish-2.3.0ã§ã¯ãã³ãã³ããã€ã³ãåºåïŒ
bind
bind '' self-insert
bind \n execute
bind \r execute
bind \t complete
bind \cc 'commandline ""'
bind \cd exit
bind \ce bind
ã©ã®ããã«fish2.3.0ãã€ã³ã¹ããŒã«ããŸãããïŒ ãŠãŒã¶ãŒã¹ããŒã¹ã¹ã¯ãªãããèŠã€ãããªãfishãã€ããªãå®è¡ããŠããããã§ãã
ãœãŒã¹ãã
git clone
autoconf
configure
gmake
gmake install
ããŠãããã¯åççã«èŠããŸãã 次ã®ã³ãã³ãã¯äœãåºåããŸããã
echo $__fish_active_key_bindings
echo $fish_function_path
é¢æ°ãã¹ãã£ã¬ã¯ããªã®1ã€ïŒéåžžã¯æåŸã«ãªã¹ããããŠãããã£ã¬ã¯ããªïŒã«_fish_default_key_bindings.fish_ããããŸããïŒ functions fish_default_key_bindings
äœãåºåããã®ãç¥ãããã§ãã ãã®åºåãã³ããŒããŠè²Œãä»ããªãã§ãã ããããã ãã_fish_default_key_bindings.fish_ãã¡ã€ã«ã«ãããã®ãšäžèŽããå¿
èŠããããŸãã ãŸããããŒãã€ã³ãã£ã³ã°ã¯éåžžã___ fish_config_interactive.fish_ã¹ã¯ãªããã«ãã£ãŠèšå®ãããŸãããã®ã¹ã¯ãªããã¯ãé¢æ°ãã¹varã«ãã£ãŠãªã¹ãããããã£ã¬ã¯ããªã®1ã€ã«ããå¿
èŠããããŸãã
.config / fish / config.fishãåé€ãããšããã¹ãŠãæ£åžžã«å®è¡ãããŸãã
ãããã set LANG zh_CN.UTF-8
æååã.config / fish / config.fishãŸãã¯/usr/local/etc/fish/config.fishã«é
眮ãããšãåé¡ãçºçããŸãã
echo $__fish_active_key_bindings
äœãåºåããŸããã
echo $fish_function_path
åºåïŒ
/home/lhm/.config/fish/functions /usr/local/etc/fish/functions /usr/local/share/fish/vendor_functions.d /usr/local/share/fish/functions
.config / fish / config.fishãåé€ãããã/ usr / local / etc / fish / config.fishã®ãã¹ãŠã®è¡ãã³ã¡ã³ãåãããšãåºåã¯æ¬¡ã®ããã«ãªããŸãã
echo $__fish_active_key_bindings
åºåïŒ
fish_default_key_bindings
echo $fish_function_path
åºåïŒ
/home/lhm/.config/fish/functions /usr/local/etc/fish/functions /usr/local/share/fish/vendor_functions.d /usr/local/share/fish/functions
ãã¡ã€ã«fish_default_key_bindings.fish
ã¯/usr/local/share/fish/functions/fish_default_key_bindings.fishã«ãããŸã
éãããŒãã€ã³ãã£ã³ã°ãèšå®ããããšã¯æ±ºããŠãªãããã§ãã
ããã¯ã __fish_config_interactive
ïŒãã€ã³ãã£ã³ã°èšå®ãå«ãïŒãå®è¡ãããªãïŒæåã®ããã³ããã®çŽåã«ããå¿
èŠããããŸãïŒãã$ fish_key_bindingsã空ã§ããïŒå€ã次ã®å Žåã¯ããã©ã«ãã®ãã€ã³ãã£ã³ã°ã«æ»ãå¿
èŠãããïŒããã§ããæå¹ã§ã¯ãããŸããïŒã
$ LANGãèšå®ããããšã§ããªã¬ãŒãããããã«èŠããããããšã³ã³ãŒãã£ã³ã°ã®åé¡ã瀺ããŠããŸãã
githubããšã³ã³ãŒããä¿®æ£ããããšãããã©ããããããªãããããã¹ãŠã®æ§æãã¡ã€ã«ãšfishdãã¡ã€ã«ã¯å ã®åœ¢åŒã§é©åãªå ŽåããããŸãã ãŸããconfig.fishã§èšå®ããªãå Žåã®$ LANGå€ã¯äœã§ããïŒ ïŒASCIIäºæã§ããå¿ èŠããããŸããããããªããšãèªåã®ãã¡ã€ã«ãèªã¿åãããšããã§ããªããšæããŸãããããããŸããïŒ
_config.fish_ã«set LANG zh_CN.UTF-8
ãè¿œå ããŸããããåé¡ã¯çºçããŸããã§ããã @fahoãèšãããã«ãããã¯æåãšã³ã³ãŒãã®åé¡ã®ããã§ãã å
·äœçã«ã¯ãéã®ãã¡ã€ã«ã¯UTF-8ãšããŠãšã³ã³ãŒããããŠããŸããã file /usr/local/share/fish/functions/__fish_config_interactive.fish
ã¯äœãå ±åããŸããïŒ ãASCIIããã¹ãããšè¡šç€ºãããŠããå Žåã¯ãLANGè¡ãè¿œå ããŠããã次ã®ãããªæ°ããã·ã§ã«ãèµ·åããŠããããã°åºåãåéããŸãã
script
fish -d5
exit
exit
次ã«ã_typescript_ãã¡ã€ã«ããã®åé¡ã«æ·»ä»ããŸãã
file /usr/local/share/fish/functions/__fish_config_interactive.fish
/usr/local/share/fish/functions/__fish_config_interactive.fish: ASCII text
cat typescript output:
Script started on Mon May 23 07:34:02 2016
@ ~/home/lhm> /usr/local/bin/fish -d5
@ ~/home/lhm> exit
@ ~/home/lhm> exit
ãªããŠãã£ããïŒ fish -d5
ã¯ã·ã§ã«ããã³ãã以å€ã®åºåãçæããªãã£ããšèšã£ãŠããŸããïŒ æ¬¡ã®ãããªå€§éã®åºåãåŸãããã¯ãã§ãã
fish: Continue job 1, gid 0 (fish_title), COMPLETED, NON-INTERACTIVE
fish: proc::read_try('fish_title')
fish: io_buffer_t::read: blocking read on fd 3
DragonFlyã¯https://www.dragonflybsd.org/ãžã®set LANG C
ãŸãã¯set LANG en_US.UTF-8
ã䜿çšãããšã©ããªããŸããã
ã¯ãã httpsïŒ//www.dragonflybsd.org/ã¯ãããžã§ã¯ãã®ããŒã ããŒãžã§ãã
ç§ã¯æ¬¡ã®ãããªgitãœãŒã¹ãããã«ãããŸãïŒ
git clone
autoconf
configure
gmake
gmake install
set LANG Cã®ã¿ãfish -d5
åäœãããããšãã§ããŸãã
<2> fish: sourcing /usr/local/share/fish/config.fish
<4> fish: Exec job 'builtin source /usr/local/share/fish/config.fish' with id 1
<4> fish: Exec job 'set -g IFS \n\ \t' with id 2
<3> fish: Skipping fork: no output for internal builtin 'set'
<3> fish: Set status of set -g IFS \n\ \t to 0 using short circuit
<3> fish: Job is constructed
<4> fish: Continue job 2, gid 0 (set -g IFS \n\ \t), COMPLETED, NON-INTERACTIVE
<4> fish: Exec job 'status --is-interactive' with id 2
<3> fish: Skipping fork: no output for internal builtin 'status'
<3> fish: Set status of status --is-interactive to 0 using short circuit
<3> fish: Job is constructed
<4> fish: Continue job 2, gid 0 (status --is-interactive), COMPLETED, NON-INTERACTIVE
<4> fish: Exec job 'not set -q NVIM_LISTEN_ADDRESS' with id 2
<3> fish: Skipping fork: no output for internal builtin 'set'
<3> fish: Set status of not set -q NVIM_LISTEN_ADDRESS to 1 using short circuit
<3> fish: Job is constructed
<4> fish: Continue job 2, gid 0 (not set -q NVIM_LISTEN_ADDRESS), COMPLETED, NON-INTERACTIV
set LANG en_US.UTF-8
ã¯set LANG zh_CN.UTF-8
ãšåãçµæã§ãããã·ã§ã«ããã³ãã以å€ã®åºåã¯çæãããŸããã
ä»ã®DF4.4ããã¯ã¹
/usr/local/bin/fish -d5
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
fish-2.2.0ã¯æ£åžžã«å®è¡ãããŸãã
ããŠãéãšDragonFlyã®ã¯ã€ãæåé¢æ°ã®éã«ã¯æããã«éäºææ§ãããããåŸè ã«ã¯ãã°ããããŸãã éãæ§ç¯ããŠãã¹ãã§ããDragonFly4.3ã·ã¹ãã ã«ã¢ã¯ã»ã¹ã§ããŸããïŒ éèŠãªå€æŽç¹ã¯ãDragonFly4.4ãã±ãŒã«ãµããŒãã«å°å ¥ãããå€æŽã§ããããšã確èªããããšããå§ããããã°å¹žãã§ãã
4.2-RELEASE DragonFlyããã¯ã¹ã§ææ°ã®éããã¹ãããŸãããããã¹ãŠåé¡ãªãåäœããŸãã
cat .config/fish/config.fish
set -gx LANG zh_CN.UTF-8
locale
LANG="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_ALL=""
/usr/local/bin/fish -v
fish, version 2.3.0-162-g85e701f
uname -a
DragonFly . 4.2-RELEASE DragonFly v4.2.4-RELEASE #6: Sun Aug 9 13:25:14 EDT 2015 [email protected]:/usr/obj/home/justin/release/4_2/sys/X86_64_GENERIC x86_64
ããŠãDragonFlyã®ã¡ã³ããã«çžè«ããŠãã ããã ç§ã¯åœŒãã®ã³ãŒãã«åé¡ããããšèšã£ãŠããã®ã§ã¯ãããŸããã ãããã mbrtowc()
ãwcrtomb()
ãããªé¢æ°ããéãããããåŒã³åºãããšãã«æåŸ
ãããçµæããããããªãçç±ã説æããŠããå¯èœæ§ãé«ããªããŸãã ãã®è¡åãéã«ã®ã¿åœ±é¿ãäžããå¯èœæ§ã¯ã»ãšãã©ãããŸããã
ããã¯ãDragonFly BSD 4.5-DEVELOPMENTã§ããä»»æã®UTF-8ãã±ãŒã«ïŒ en_AU.UTF-8
ïŒã§åçŸã§ããŸãã
@ krader1961
ã§ã¯ãé¢æ°mbrtowcïŒïŒãšwcrtombïŒïŒããã¹ãããããã®ãã¹ãã±ãŒã¹ãæããŠãã ããã
ããŠãDragonFlyã®ã¡ã³ããã«çžè«ããŠãã ããã ç§ã¯åœŒãã®ã³ãŒãã«åé¡ããããšèšã£ãŠããã®ã§ã¯ãããŸããã ããããéãããããåŒã³åºãããšãã«mbrtowcïŒïŒãwcrtombïŒïŒã®ãããªé¢æ°ãæåŸ ãããçµæããããããªãçç±ã説æããŠããå¯èœæ§ãé«ããªããŸãã ãã®è¡åãéã«ã®ã¿åœ±é¿ãäžããå¯èœæ§ã¯ã»ãšãã©ãããŸããã
ã§ã¯ãé¢æ°mbrtowcïŒïŒãšwcrtombïŒïŒããã¹ãããããã®ãã¹ãã±ãŒã¹ãæããŠãã ããã
ç§ã¯ææ¡ããã€ããã§ãã
$ gmake fish_tests
$ ./fish_tests convert
ããããããã¯å€±æããŸããã ./fish_tests
ãä»ããŠãã¹ãŠã®ãã¹ããå®è¡ãããšãããã€ãã®ãã¹ãã倱æããŸããããã®åé¡ã説æãããã®ã¯äœããããŸããã
DragonFly 4.4.3ãã€ã³ã¹ããŒã«ããgitheadããfishããã«ãããŠã€ã³ã¹ããŒã«ããŸããã _config.fish_ã§set -x LANG en_US.UTF-8
ããŠfishãéå§ãããšã次ã®ãããªäºæããªããšã©ãŒãå€æ°çºçããŸããã
alias: Name cannot be empty
There is no fish_key_bindings function called: 'fish_default_key_bindings'
Reverting to default bindings
åœç¶ã®ããšãªãããããã©ã«ãã®ãã€ã³ãã£ã³ã°ã¯æå°éã§ããããã bind
ã¯ããŒãã€ã³ãã£ã³ã°ãã»ãšãã©ç€ºããŸããlocale
ã³ãã³ãã¯ãæ瀺çã«en_US.UTF-8
èšå®ãããŸã§ã C
å ±åããŸããã åè
ã¯æ©èœããŸãããåŸè
ã¯æ©èœããŸããã ã·ã¹ãã ã®ããã©ã«ããã±ãŒã«ããen_US.UTF-8ãã§ã¯ãªããCãã§ãããšããäºå®ã¯é©ãã¹ãããšã§ãã ããã¯ãDragonFlyéçºè
ãUTF-8ãµããŒãã«åé¡ãããããšãèªèããŠããããšã瀺ããŠããŸããïŒ
ç§ã¯ããããããã°ããã®ã«ãã£ãšæéãè²»ãããããããªãããããªããããããªãã DragonFlyã®ã¡ã³ããã¯ããã®åé¡ã«ã€ããŠã®æŽå¯ãæäŸã§ããå¯èœæ§ãé«ããããçžè«ããããšããå§ãããŸãã
fwprintf
éåžžã«æå°éã®ãã¹ãã±ãŒã¹ãããã®ã§ãDragonFlyBSDã¿ã€ããå°ããŸãã
ãããããã¹ãããŠããã ããã°å¹žãã§ãã
DragonFly BSDã¡ãŒãªã³ã°ãªã¹ãã§ã Romickã¯æ¬¡ã®
éã®æ®»ã®ããŒãµãŒãèŠãŸãããå ¥åã¹ããªãŒã ã§çŽæ¥ç¹æ®æåã䜿çšããŠãBRACKET_BEGINãBRACKET_ENDãBRACKET_SEPãINTERNAL_SEPARATORãªã©ã®ããŸããŸãªãã®ãããŒã¯ããŸãã
ããã¯ãæåãã¢ã«ãã¡ãããã®å®å šãªã¡ã³ããŒã§ãããã±ãŒã«ã«å°éãããŸã§ã¯åé¡ãããŸããã
ã芧ã®ãšãããUnicodeã®ç¯å²ã¯0x0ã0x10FFFFã§ãæåINTERNAL_SEPARATORã®ã³ãŒãã¯0xFDD7ã§ããDragonFly BSDé¢æ°ã§ã¯ãiswalnumïŒïŒã¯ãã¹ãŠã®ãã±ãŒã«ãåæã«ãã§ãã¯ããããã
3ã€ã®éžæè¢ãããããšïŒ
1ïŒç¬èªã®iswalnumïŒïŒã䜿çšããŸããdiff --git a/src/common.h b/src/common.h index e59dfc0..e8c01c3 100644 --- a/src/common.h +++ b/src/common.h @@ -769,4 +769,8 @@ __attribute__((noinline)) void debug_thread_error(void); /// specified base, return -1. long convert_digit(wchar_t d, int base); +inline int iswalnum(wchar_t chr) { + return((chr >= L'a' && chr <= L'z') || (chr >= L'A' && chr <= L'Z') || iswdigit(chr)); +} + #endif
2ïŒç¹æ®æåã«ã¯ãã倧ããªå€ã䜿çšããŸãïŒç§ã¯ããããã¹ãããŠããŸããïŒã
3ïŒäœãä»ã®ãã®:)
ãã®äººã¯Unicodeã«ã€ããŠäœãç¥ã£ãŠããã®ã ãããã ãããã®ãç¹æ®æåãã¯ãã¢ã«ãã¡ãããã§ã¯ãªããšå®çŸ©ãããŠããç§çšé åã®æåã§ãïŒ https ïŒ iswalnum(INTERNAL_SEPARATOR)
ã«å¯ŸããŠfalseãè¿ããŸãã ããŸãã«ãããããã®ç¹æ®æåãfwprintfïŒïŒã®ãããªé¢æ°ã«æž¡ãããšã¯æ±ºããŠãªãã®ã§ããªããããé¢é£ããã®ãããããŸããã
æ¬åœã«çŽ æŽãããçž®å°ãã¹ãã±ãŒã¹@zancheyïŒ
DragonflyBSDãã©ã®ããã«ã€ã³ã¹ããŒã«ããŠããŸããïŒ å€éã®ISOãš4.4.3ãªãªãŒã¹ã®ISOïŒVirtualboxã䜿çšïŒãè©ŠããŠã¿ãŸããããfwprintfãæžããããã¹ãã±ãŒã¹ã§åé¡ãåçŸã§ããŸããã§ããã
ç·šéïŒ4.4.3ã§fishããã«ãããŠã€ã³ã¹ããŒã«ããããšãã§ããŸãããéç¥ãã¹ããé€ããŠããã¹ããåæ Œã§ãã
ãã¹ãã±ãŒã¹ã¯SSHçµç±ã§ã®ã¿ãã§ã€ã«ãªãŒããŒããŸã-VirtualBoxã®ã·ã¹ãã ã³ã³ãœãŒã«ã§åäœããŸãã
ãããããã Vagrantã䜿çšããŠããŸããïŒ
ããããåãªãVirtualBox5.0.20ã§ãã
ïŒ3406ãè€è£œãšããŠéããåŸãããã®æææš©ãååŸããŸãã FreeBSDãã€ã³ã¹ããŒã«ããŠåé¡ãåçŸããæéãèŠã€ããæåããå Žåã¯ããã«ãããã°ããããã«ããŸãã
@lhmwzyããã¯ããããïŒ3406ãšåãåé¡ã§ãã åèãŸã§ã«ãç§ã¯åŸè ã®åé¡ãäºåããããã远跡ããŠf2246dfb343bea19beb176fb2cc534f85513b2ebãã³ãããããŸããã
ç§ã®ã¢ããããŒãããåé¡ïŒ3406ãŸã§ïŒç§ã¯çŸåšãDragonFlyBSDã§ã¯ãªãFreeBSD12ã䜿çšããŠããããšã«æ³šæããŠãã ããïŒïŒ
åèãŸã§ã«ãFreeBSD 12ãã€ã³ã¹ããŒã«ããŸãããããã®åé¡ãåçŸã§ããŸãã ã©ã®ããŒãæ©èœããªãçç±ã¯ãããã©ã«ãã®ããŒãã€ã³ãã£ã³ã°ãUTF-8ãã±ãŒã«ã§èšå®ãããŠããªãããã§ãã
Reverting to default bindings
The function call stack limit has been exceeded. Do you have an accidental infinite loop?
fish: __fish_reload_key_bindings VARIABLE SET fish_key_bindings
^
in event handler: handler for variable 'fish_key_bindings'
alias: Name cannot be empty
ãªã©ã®ä»ã®ãšã©ãŒããããŸãã ãŸãã git checkout f2246df~
ãããã«ãããŠãåé¡ããªãããšã確èªããŸããã ããã¯ããã®å€æŽã®äœæè
ãšããŠã®ç§ã«ãšã£ãŠéåžžã«é©ãã¹ãããšã§ãã
åäœãåå²ããã³ããããèŠã€ããã®ã¯çŽ æŽãããä»äºã§ãã ããããããã§äœãæªãã®ãã¯ç§ã«ã¯ããããŸããã
ãšã€ãªã¢ã¹ãªã©ã®ä»ã®ãšã©ãŒããããŸãïŒååã空ã«ããããšã¯ã§ããŸãã
@ krader1961 ïŒããã¯@floamãèŠãã®ãšåãåé¡ã®ããtest -z "$name"
倱æãããšããã®ãšã©ãŒãçºè¡ãããŸãã
@faho ãã¯ããç§ã¯ãã®ãšã€ãªã¢ã¹é¢æ°ã®å€±æããããã°ããŠããŠãåãçµè«ã«éããŸããã ããããããã®BSDçç¶ã®ãã¹ãŠã説æãããã©ããã«ããããããäºéåŒçšç¬Šã§å²ãŸããæååã«ã¯ãUnicodeã®äºçŽæåç¯å²ã«ããå éšããŒã¯ã³ã®1ã€ã§ããVARIABLE_EXPAND_SINGLEãå«ãŸãããããæ·±ãæãäžããã®ã«é©ããå Žæã®ããã§ãã
ãŸãããããã°ã¹ããŒãã¡ã³ããè¿œå ããŸããã䜿çšãããã¹ãŠã®isw...()
é¢æ°ïŒ iswalnum()
ïŒã¯ãFreeBSD 12ã®å
éšããŒã¯ã³ã«å¯ŸããŠæ£ããçµæãè¿ããŸãããããã£ãŠã誰ãã@zancheyã«ææ¡ããBSDã¡ãŒãªã³ã°ãªã¹ãã§ç¬èªã®iswalnumãå®çŸ©ããããšã¯ç¡æå³ã§ãã
å®éãäºéåŒçšç¬Šã§å²ãŸããæååã®åé¡å ã®varå±éã¯ãBSDã®UTF-8ãã±ãŒã«ã§éåžžã«ç°¡åã«åçŸã§ããŸãã
$ set wtf b
$ echo a "$wtf" c
a c
$ echo "a $wtf c"
a b c
$ echo "a $wtf"
a
$ echo "$wtf c"
b c
äºéåŒçšç¬Šã§varåç §ãçµäºãããšãã«äœãèµ·ãã£ãŠããã®ããæ·±ãæãäžãã䟡å€ã¯ééããããŸããã äžèšã®äŸã¯ãã¹ãŠãLC_ALL = Cã§æ£åžžã«æ©èœããŸãã
æ°æéåã«iswalnum()
ãFreeBSDã§æ£è§£ãè¿ãããšèšã£ããšããç§ã¯ééã£ãŠããŸããã setlocale("")
ãåŒã³åºãããåã«ããããã°åºåã§ãã®é¢æ°ã誀ã£ãŠåŒã³åºããŸããã ãããã®ãããã°åºåã移åãããšã0xFDD0ã§å§ãŸã32ã³ãŒããã€ã³ããããã¯ã«ãããFreeBSDã§ã¯iswalnum()
ãšiswgraph()
ãæ£ããå€0ã§ã¯ãªã1ãè¿ããŸãããGNUã¯è¿ããŸããã äžæ¹ãGNUã¯ãFreeBSDãæ£ãããŒããè¿ãã®ã«å¯Ÿããç§ãã¡ã䜿çšãã0xF600ããå§ãŸãç§ç䜿çšæåã®iswgraph()
ã«å¯ŸããŠèª€ã£ãŠ1ãè¿ããŸãã
ãããã£ãŠããã©ãããã©ãŒã ã«é¢ä¿ãªãæ£ããåäœãå®çŸããã«ã¯ããããã®é¢æ°ã®åšãã«ç¬èªã®ã©ãããŒãå®è£ ããå¿ èŠãããããã§ãã æå°éã®è¿œå ã³ãŒããšçŽããããæœè±¡åã¬ã€ã€ãŒã§ãããè¡ãæ¹æ³ã«ã€ããŠå°ãèããå¿ èŠããããŸãã
ç§ã¯ãã®FreeBSDã®ãã°ãéããŸããã ãã®å£ããå®è£ ãåé¿ããå¿ èŠããããŸãã
æã
ã¯ãã§ã«ãéãã³ãŒããåŒã³åºãå¿
èŠãããããšããã¿ãŒã³ã確ç«ããŠããŸããfish_wcswidth()
ã§ã¯ãªãwcswidth()
ã ãããcppcheckã«ãŒã«ãšããŠç¥ã£ãŠããŸãïŒ_.cppcheck.rule_ãåç
§ïŒã isw...()
ãã¡ããªãŒã®é¢æ°ã«å¯ŸããŠãåãããšãã§ããŸãã ãããããããæåã®è§£æ±ºçã§ããïŒ ããã¯ç¢ºãã«å®è£
ããã®ãæãç°¡åã§ãã 誰ããããè¯ã解決çãæã£ãŠããŸããïŒ
PSãç§ã¯ãã®åé¡ãããã°ãã§ã¯ãªããæ¡åŒµããšããŠåé¡ããåŸåããããŸããããã¯ããµããŒãããŠãããã©ââãããã©ãŒã ã®1ã€ã§ãã°ãåé¿ããããã«éãæ¡åŒµããããšã«ã€ããŠè©±ããŠããããã§ãã ã¯ãïŒ çªå·ïŒ 誰ãæ°ã«ããªãïŒ ïŒã¹ãã€ã«ïŒ
PPSã iswalnum()
æäŸãããã©ãããã©ãŒã ããªãŒããŒã©ã€ããããšãFreeBSD12ã§ãã®åé¡ãä¿®æ£ãããããšã確èªããŸããã
ãããåŠçããããã®ç§ã®å¥œãŸããæ¹æ³ã¯ãconfigureæã«åäœããã§ãã¯ãããã®ç¹ã§äºææ§ããªãå Žåã«ã®ã¿é¢æ°ããªãŒããŒã©ã€ãããããšã§ãã
autoconfãã¹ãã«åºã¥ããŠãã©ãããã©ãŒã é¢æ°ããªãŒããŒã©ã€ãããã€ããã¯ãããŸããã æåã«ããããªãªãŒã¹ã§æ£ããïŒãŸãã¯æ£ãããªãïŒåäœããã次ã®ãªãªãŒã¹ã§åäœãå転ããããã£ã¹ããªãã¥ãŒã·ã§ã³ã®ã€ã³ã¹ã¿ã³ã¹ã確èªããŸããã ããšãã°ãFreeBSD 10çšã«ãã«ãããããã€ããªã¯ãFreeBSD 12ã§ãæ£ããåäœããã¯ãã§ããautoconfãã¹ãã«åºã¥ããåäœã§ã¯ãããã¯åŠçãããŸããã 第2ã«ãåé¡ã®ãã¹ãã¯ãæ£ããåäœãä¿èšŒããããã«ã©ãããã圱é¿ãåããé¢æ°ã®åŒã³åºããé倧ãªããã©ãŒãã³ã¹ã«ãŒãã«ãªãå Žåã§ããéåžžã«å®äŸ¡ã§ãã 第3ã«ããã®å€æŽã«ãã£ãŠå°å ¥ããããã«ããŒé¢æ°ã®1ã€ãå¿ èŠã§ããããã«ããããŠãŒã¶ãŒãéæ³ã®å éšäœ¿çšã®ã¿ã®ã³ãŒããã€ã³ãïŒTODOãªã¹ãã«ãããŸãïŒãå éšç¶æ ã«æ¿å ¥ã§ããªãããã«ãªããŸãã
ãŸãã以åã®ã³ã¡ã³ãã§æ¬¡ã®ã¹ããŒãã¡ã³ããæžãããšãã®èšé²ã®ããã«ã2ã€ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãéã«ããŸããã
äžæ¹ãGNUã¯ãFreeBSDãæ£ãããŒããè¿ãã®ã«å¯Ÿããç§ãã¡ã䜿çšãã0xF600ããå§ãŸãç§ç䜿çšæåã®iswgraphïŒïŒã«å¯ŸããŠèª€ã£ãŠ1ãè¿ããŸãã
Unicode FAQã«ãããšãç§çšé åã®ã³ãŒããã€ã³ãã¯ãé¢é£ä»ããããã°ãªããæã€ãã®ãšããŠåé¡ãããããšãç®çãšããŠããŸãïŒã€ãŸãã iswgraph()
ã¯1ã€ãè¿ãå¿
èŠããããŸãïŒããè±æ°åã§ã¯ãããŸããïŒã€ãŸãã iswalnum()
ã¯è¿ãå¿
èŠããããŸãïŒãŒãïŒã
ãããã®å€ã®1ã€ã§iswalnumïŒïŒã®çµæããã§ãã¯ããautoconfãã¹ããæ©èœããããã«ç§ã«ã¯æããŸãã
ããŒãããã®FreeBSDãã€ããªããã±ãŒãžã¯ãã¿ãŒã²ãããšã¯ç°ãªãlibcã«å¯ŸããŠãã«ããããŸãããããã¯ããã¹ãŠã®configure-timeãã¹ããã©ã®ããã«æ©èœãããã®åºç€ã圢æããŸãã
ã³ããããããšãããã¯Linuxããã³OS Xã§ããã·ã¹ãã ãæäŸããæ©èœãäžå¿ èŠã«ãªãŒããŒã©ã€ãããŸãã@ krader1961ã
Fishã¯ãã«ããããFreeBSDäžã®å ±ælibcã«å¯ŸããŠåçã«ãªã³ã¯ãããŸãã
$ ldd fish
fish:
libncurses.so.8 => /lib/libncurses.so.8 (0x800948000)
libthr.so.3 => /lib/libthr.so.3 (0x800b9c000)
libc++.so.1 => /usr/lib/libc++.so.1 (0x800dc3000)
libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x801082000)
libm.so.5 => /lib/libm.so.5 (0x8012a0000)
libc.so.7 => /lib/libc.so.7 (0x8014cb000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x801885000)
ãã±ãŒã«ãµãã·ã¹ãã ã®åäœãå€æŽããããšãlibc.soã®ããŒãžã§ã³çªå·ãå€æŽãããããšã100ïŒ ç¢ºå®ã«èšã£ãŠããŸããïŒ ç§ã«ã¯ãã®è³ªåãæ¢æ±ããæéãåŸåããããŸããã ç§ã®ä¿®æ£ãéã®è¡åãããã©ãŒãã³ã¹ã«ç®ç«ã£ã圱é¿ãäžããªãããšãèãããšãç§ã¯ãããä¿å®çã§ãã
ãã±ãŒã«ãµãã·ã¹ãã ã®åäœãå€æŽããããšãlibc.soã®ããŒãžã§ã³çªå·ãå€æŽãããããšã100ïŒ ç¢ºå®ã«èšã£ãŠããŸããïŒ
ãç§ãã¡ã®åé¡ã§ã¯ãããŸãããã
ãç§ãã¡ã®åé¡ã§ã¯ãªãã
ãã¡ãããããã¯ç§ãã¡ã®åé¡ã§ãã ããããå£ããå®è£
ã«å¯Ÿããfish_wcswidth()
ããã³åæ§ã®åé¿çãããçç±ã§ãã
ãã°ã¯ctypeãã¡ã€ã«ãçæããlocaledefããŒã«ã«ãããIllumosãåå ã§ãã ããã§DFãä¿®æ£ããŸããïŒ
https://github.com/DragonFlyBSD/DragonFlyBSD/commit/07ed7d329a83714ec268e2f3ce026bba5a1ac5c2
@jrmarino ïŒæ å ±ãããããšãïŒ ããããã€ããŸããŸãªOSã«çµã¿èŸŒãŸãããç¥ã£ãŠããŸããïŒ DFã®å€æŽã¯ãã§ã«ãŠãŒã¶ãŒã«å±ããŠããŸããïŒ
FreeBSDã§ãä¿®æ£æžã¿https://svnweb.freebsd.org/base?view=revision&revision=306782
ã©ããããããšãããããŸããïŒ FreeBSD 11.0-RELEASE-p1ã«ã¢ããã°ã¬ãŒãããã°ããã§ãããããã¯éåžžã«é¢åã§ãã ããããFreeBSD11.0-RELEASEã«çµ±åããããã©ããããã€çµ±åããããç¥ã£ãŠããŸããïŒ
githeadããäœæãããéã®ãã®ãã°ãåé¿ããããšã«æ³šæããŠãã ããã BSDã®githeadããã®éã«ãŸã åé¡ãããå Žåã¯ããç¥ãããã ããã åé¿çã¯fish2.3.1ãŸãã¯ãã以åã®ãªãªãŒã¹ã«ã¯ãããŸãããã次ã®2.4.0ãªãªãŒã¹ã«å«ãŸããäºå®ã§ãã
å€æŽã¯ããªãèªå·±å®çµåã§ã-ããã«ãããã¹ãŠã®ã¡ã³ããã«ãšã£ãŠç°¡åã«ããã¯ããŒãã§ããã¯ãã§ãã
ãã§ã«ã³ãŒãã¬ãã¥ãŒäžã§ãã
https://reviews.freebsd.org/D8148
ãããã
@shanavarå€æŽã¯ããªã
gitããFishãã³ã³ãã€ã«ãããšãFreeBSD 11.0-RELEASE-p1ã§åäœããŸãïŒ
sudo pkg remove fish
sudo pkg install autoconf gmake
git clone [email protected]:fish-shell/fish-shell.git
cd fish-shell
autoconf
./configure
gmake
sudo gmake install
ãã®åŸãè¿œå /usr/local/bin/fish
ãã/etc/shells
ãšå®è¡chsh -s fish
éã«ããªãã®ã·ã§ã«ãå€æŽããŸãã
ãããã£ãŠããããã®åé¡ãæ±ããŠããã®ã¯ç§ã ãã§ã¯ãããŸããã èšæ£ããŠãããŠããããšããããã¯ç§ãæãããã
æãåèã«ãªãã³ã¡ã³ã
ç§ã¯ãã®FreeBSDã®ãã°ãéããŸããã ãã®å£ããå®è£ ãåé¿ããå¿ èŠããããŸãã